根据地图数据程序化城市建模 Houdini - Procedural Modeling - Procedural City

花了大概一个礼拜左右的时间把城市建模的插件做出来了,还有一些瑕疵,但是已经达到预期想要的效果了。说在最前面的是,做这个东西完全没有任何商业目的,只是希望在houdini里面掌握更多程序化的思维。

先看效果:

 

整体思路分为:

1;抓取地图数据

2:分析地图数据,并根据坐标位置来生成最基本的建筑和道路的几何形状

3:根据道路和现有建筑布局,用点填充其他空余空间

4:程序化生成建筑楼,并将上一步的点提换成建筑

 

下面将每一步的具体方法和思路讲解一下:

1:抓取地图数据:

现在市面上能够免费得到地图所有元素坐标和类别信息的机构我只找到了openstreetmap.org这一家,他们这个项目的目的也是为了能够向世界所有人创造并提供免费的地理数据。我们可以直接在他的地图网页上框选一定的地图空间然后导出相应经纬度的地图坐标数据。非常重要的一点事他们目前只提供osm格式文件,其实就是xml的一种,如果想用编辑器直接查看里面的内容,可以吧后后缀名.osm改为.xml就可以打开了。

地图相关资源:

地图链接:https://www.openstreetmap.org

关于地图到处的xml数据结构:http://wiki.openstreetmap.org/wiki/OSM_XML

关于xml几个重要标记的解释:http://wiki.openstreetmap.org/wiki/Elements

地图中的元素一览表:http://wiki.openstreetmap.org/wiki/Map_Features

 

这里简单讲解一下.osm格式的结构:

<osm>
	<bounds minlat="***" minlon="***" maxlat="***" maxlon="***"/>
	<node id="***" ******** lat="40.4444343" lon="-79.9486641"/>
	<node/>
	....
	<node/>
	<way id="27574365" ....>
  		<nd ref="1705867277"/>
  		<nd ref="302440336"/>
  		<tag k="highway" v="service"/>
 	</way>
 	....
 	<relation/>
 	...
 </osm>

 

bounds定义了整个数据的上下左右边界经纬度,Node相当于是地图中记录下来了的每一个点的数据,他可以是道路上的也可以是建筑上的。way是把所有点集结起来的一种方法,通过对他的tag做标签能够确定单个way下面所有的点是某一条街道还是建筑或者其他物体。relation是node和way之间的所有关系,我们这里没有用上所以不做介绍了。

 

2:分析地图数据,并根据坐标位置来生成最基本的建筑和道路的几何形状

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值