首页
学习
活动
专区
工具
TVP
发布

Houdini造CityEngine之GMD

各位同学,大家好~

dreamsong好久不出现了,我还在地球上。CityEngine的相关问题在各个平台群或者课程问答处留言即可,我看到就会回复。

好久不冒泡因为找了件有意思的事情做,一个月前我问了个朋友,我说:我想用Houdini造个CityEngine,但Houdini还没用过,你觉得可以实现吗?他回了我两个字:费劲!

我当时心里其实就乐了,这事有意思这个才是我要干的!哈哈

最开始的计划是对houdini的节点进行封装,houdini是面向全类型三维建模和动画的工具集合并没有专门针对建筑或者城市建模的工具集(未来官方会发布也有可能),那么我的一开始想法就是把现有节点拼装成专门针对城市或者建筑的封装节点。模仿CityEngine函数库打包houdini节点尽管可以做到,但是会异常笨重,而且计算时间和执行效率并没有丝毫的提高,即使是完成了这样封装库调用起来并不会像CityEngine里面的函数一样直接搜索然后就可以方便执行,使用者可能还要打开这个封装包看下哪里会有bug,具体怎么使用等,而且调用了这个包还是把包里节点全部执行一次,而cityengine执行函数的时候并不需要这一步,所以它效率很高。Houdini优点是节点丰富,使用灵活,解决单一问题方便,通过目标需求完整功能打包可能比做CityEngine函数库的方法更实用。

houdini本身支持三维数据格式输入输出,矢量数据或者gis数据本身不支持,但是通过开发者发布的节点(或者是插件)可以实现矢量数据导入,我通过导入osm数据的方法进行的测试,有数据才更好验证嘛~

分析了下osm数据的类型、属性字段等并做了简单分类,通过houdini做了简单的节点搭建然后读取属性字段,发现生成效率挺高,然后开始对模型做了分级,就类似于Lod一样便于模型精度控制。以下是测试视频。

这个程序暂时就叫GOGB, Get Openstreetmap data to Grow Buildings .版本为z-1(beta).

好吧,我猜你们已经想到这货跟CityEngine里面getmapdata获取数据然后执行CGA生成模型很像,没错!我就是模仿着它搞得GOGB,到这里我可以解释下本篇文章的标题:

Houdini造CityEngine之GMD   

GMD就是getmapdata的缩写,课程中几乎每套课程都有学生问道为什么我的getmapdata功能无法使用,或者我登陆了账户也无法无法获取到dem数据。好吧,今天详细讲一下getmapdata的前世今生,以及ESRI对这个功能设置的各种思考(我认为就是不必要的封闭策略)。

我们先回顾下getmapdata第一个版本发布时候的宣传视频。

ESRI在2016年发布了getmapdata功能,当时我惊叹这会是一个革命性的改变,从数据下载到模型生成整个流程几乎可以一键完成了。这个功能也是很多小伙伴或者初识CityEngine的人留下较多印象的功能之一。

在2016之前的版本中,尤其是CityEngine被ESRI收购以后2011-2015各个版本中已经完全兼容ArcGIS数据格式,Shp  GDB两种地理信息数据格式可以非常方便导入cityengine,但是对于不懂gis数据或者不熟悉arcgis相关软件的人来说数据导入cityengine仍然有些困难,这就导致真正的城市建模无形中设立了门栏,尤其是esri官方对shp数据和gdb数据的主推,尽管收购cityengine之前就能够完美导入dxf、osm等矢量数据(现在依旧支持)。然后2016年发布getmapdata以后大家突然看到栅格数据(遥感影像数据和dem数据)矢量数据可以一键完整下载,不用为数据发愁了,可以专心撸CGA了,很多人很开心。然后之后不久2017年到2020各个版本,几乎都有人吐槽,getmapdata怎么无法使用,登录了也无法使用。

我们先看下ESRI的产品策略,cityengine软件本身是可以免费试用30天的,即注册账户可以获得一个唯一注册号,注册号到期无法使用(当然你可以每月注册一次继续使用),getmapdata功能也是需要你登陆账户才可以使用的,也就是你没有登录账户,或者是绿色版你就基本与这个功能无缘了,ESRI这种机制本身没有问题.。但我们深入分析下getmapdata获取数据的方法。

getmapdata数据分两类,栅格数据中遥感影像数据为ESRI自家的,dem数据为30米精度的免费数据(即为2003年美国地质勘测局与日本经济产业省联合发布的30米精度全球免费数据,如有错误请批评指正。);矢量数据在getmapdata下载的时候默认分成两种,面数据和线数据,面生成建筑,线生成交通,这些数据都是来自openstreetmap。也就是通过账户下载的实际数据只有遥感影像是ESRI自家且有权限设置的,而遥感影像数据是目前最容易获取到的,而其它数据用户都可以自己免费下载。到这里我想有人开始吐槽了,getmapdata这么好用的功能却被一个账户登录功能拒之门外,而这个工具主要就是用来获取免费数据~,另外一个吐槽点是一般的注册账户即使是你激活了软件你会发现你不能下载dem数据,你需要再次注册申请组织账户才可以下载dem,这时候你可能就上火了~ 其实这些数据都可以在arcgis里面完成处理然后保存成GDB然后导入cityengien,getmapdata功能只不过是帮我一键完成了这个操作。

以上这些吐槽基本能平复一下CityEngine爱好者使用getmapdata功能的槽点了~那我再回到GOGB这个程序,目前可以直接引用osm数据,直接生成城市建筑,建筑级别也可以设置。我也在考虑将遥感数据和dem数据引入的方法,其实这种思路在sketchup的插件placemaker以及blender的插件blenderGIS思路一致,为什么我们要用同样的方法在houdini上再次实现一次,好吧~ 我可以说这样做好玩么~ 哈哈

既然开始了这样一个有意思的游戏就要找到这个软件的本质,Houdini完全造出CityEngine目前看是不可能,但是Houdini的灵活性和丰富节点确实能够实现CityEngien的好多功能,2015年的课程中我说CityEngine的核心是CGA,那么函数库就是核心中的核心,但是2021年我发现我的想法也许是错误的,通过引入数据制作城市场景确实是常规做法也是制作真实城市场景的做法,但是这并不是核心, CityEngine是通过organic、raster、radial三个参数类型描绘出的城市布局类型组合,这三个参数据的随机组合基本可以描绘处全球任何城市的布局类型,然后通过Grow Street生产出数据,也就是说CityEngine具备不依赖任何数据就凭软件本身生产出具备面描绘全球城市风格数据的能力,而且生产出的数据即默认有交通和建筑地块两类。生产出的数据然后通过CGA生成的建筑将构建出整个城市的天际线,如果CGA函数是构建城市的砖,那么Grow Street才是构建城市的地基。那么Grow Street是如何实现的? 请看下节,

Houdini造CityEngine之张量场。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20210124A0591N00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券