获取模型表面的世界高度

[复制链接]
1975 |11
我有一块不规则模型(丘陵),我希望在此模型上随机生成(100棵树)。我可以随机得到横向和纵向的位置,如何获取高度,让树贴合长在模型的位置。还有,如果获取的点是一个倾斜面,能否让树倾斜着。
回复

使用道具 举报

汽汽汽汽水 发表于 2023-9-6 14:20:31 | 显示全部楼层
可以将随机的点高度拉高一点,然后往下发射一条射线。打中的位置就是表面的位置。取法线之后旋转也能解决了
回复

使用道具 举报

叽里咕噜小胡桃 发表于 2023-9-6 14:20:58 | 显示全部楼层
这个我会hhh之前考虑过
其实就是先随机取一个xy,然后在xy上垂直对着地面打射线,这样就能知道树根的位置
射线会有个返回,返回里面可以取到法向,法向量运算出垂直向量来就可以获取到倾斜角度了(之前做射击游戏时的弹痕就是这么搞的)
image.png

回复

使用道具 举报

你若盛开,蝴蝶自来楼主 发表于 2023-9-6 14:41:19 | 显示全部楼层
汽汽汽汽水 发表于 2023-9-6 14:20
可以将随机的点高度拉高一点,然后往下发射一条射线。打中的位置就是表面的位置。取法线之后旋转也能解决了 ...

感谢。是不是这样的。
const ResultList = lineTrace(new Type.Vector(x,y,1000), new Type.Vector(x,y,-100), true);
for (const item of ResultList) {
    // item: 检测到的对象
   // 找到指定的模型,获取它的表面位置及旋转
}
回复

使用道具 举报

你若盛开,蝴蝶自来楼主 发表于 2023-9-6 14:41:47 | 显示全部楼层
叽里咕噜小胡桃 发表于 2023-9-6 14:20
这个我会hhh之前考虑过
其实就是先随机取一个xy,然后在xy上垂直对着地面打射线,这样就能知道树根的位置
...

感谢感谢咕噜噜
回复

使用道具 举报

汽汽汽汽水 发表于 2023-9-6 14:42:51 | 显示全部楼层
你若盛开,蝴蝶自来 发表于 2023-9-6 14:41
感谢。是不是这样的。
const ResultList = lineTrace(new Type.Vector(x,y,1000), new Type.Vector(x,y,- ...

就是胡桃那种
回复

使用道具 举报

叽里咕噜小胡桃 发表于 2023-9-6 14:44:29 | 显示全部楼层
你若盛开,蝴蝶自来 发表于 2023-9-6 14:41
感谢。是不是这样的。
const ResultList = lineTrace(new Type.Vector(x,y,1000), new Type.Vector(x,y,- ...

是的 建议开启穿透,然后打的时候要比对一下item的guid是否是地板的guid,是的话再去取 这样会好一些
回复

使用道具 举报

你若盛开,蝴蝶自来楼主 发表于 2023-9-6 15:01:15 | 显示全部楼层
叽里咕噜小胡桃 发表于 2023-9-6 14:44
是的 建议开启穿透,然后打的时候要比对一下item的guid是否是地板的guid,是的话再去取 这样会好一些 ...

收到,非常好用
回复

使用道具 举报

叽里咕噜小胡桃 发表于 2023-9-6 15:03:44 | 显示全部楼层

是不是准备搞树木、矿石生成了?哈哈哈哈哈 我也想搞类似的,做一个233版的rust玩玩
回复

使用道具 举报

你若盛开,蝴蝶自来楼主 发表于 2023-9-6 15:37:11 | 显示全部楼层
叽里咕噜小胡桃 发表于 2023-9-6 15:03
是不是准备搞树木、矿石生成了?哈哈哈哈哈 我也想搞类似的,做一个233版的rust玩玩 ...

方向不太一样,我打算的是异兽版。吞噬进化。通过上面的方法生成一些资源和野怪。地面凹凸不平才有点感觉。
回复

使用道具 举报

热门版块
快速回复 返回顶部 返回列表