Mesh To Heightmap——这篇博客值1000RMB?

前言

最近写论文遇到个问题。稍微接触过地形渲染的同学都知道,基于一张Height map(也就是一张存储了高度值的二维纹理),可以很方便地生成三维地形模型:首先构建一个N x N的二维网格,然后根据网格顶点的坐标对Height map进行采样,以采样得到的高度值对网格顶点进行拉伸,从而得到高低起伏的三维地形模型。

以上是Heightmap To Mesh的过程,那么该如何实现Mesh To Heightmap呢?

网上找答案

经过一上午的搜索,发现遇到这一问题的朋友也不少,其中推荐的解决方案最多的是使用blender(具体来说是Render baking)(附原贴地址)。看到这个哥们一开始百思不得解而又最终豁然开朗的自问自答,我顿时被他感染了,打开了安装后就没怎么用过的blender。按照他介绍的过程,又网上搜了一些blender的教程,本以为可以不费吹灰之力,但最终还是不禁悲叹:为什么他的可以,我的就不行?后来想了一下,可能是因为用的自己生成的网格吧

没办法,只得再寻他法,在各个论坛寻找的过程中,也有人说可以利用Render to texture。虽然学过opengl和osg,本想尝试一下,但最终还是留下了不学无术的泪水。

后来看到师弟花钱买了一堆树木模型,我眼前一片开阔,默默打开了淘宝的页面。咨询了几个三维模型代做卖家,有些说做不了,有个可以做的,开口管我要1000块钱!!!我说我最多出10块,然后就没有然后了。。

解决

好吧,还是贫穷激发了我的斗志。又经历了一番搜索,发现了一篇利用Unity光线投射的官方维基,终于迎来了胜利的曙光。幸亏之前闲暇的时候还学过一点点Unity,这回算是没白学。Unity的解决方案其实道理很简单(如下图):根据要生成的heigth map的分辨率N,沿高度方向发射N x N条射线,计算从基平面到网格模型射线的长度。但关键在于怎么实现,有现成的轮子,我就直接用了。

                                                  

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值