gpt4 book ai didi

graphics - 使用位移贴图对球体进行光线追踪

转载 作者:行者123 更新时间:2023-12-02 19:53:24 25 4
gpt4 key购买 nike

我有兴趣构建一个简单的“Google Earth”类型的应用程序(用于覆盖我自己的信息,而不是 Google 拥有的大量数据)。我希望它只是一个简单的 X11 应用程序,可以使用位移(地形)信息对球体进行光线追踪。光线球体相交非常简单,但是当将显示映射放入其中时,我的头脑开始变得困惑。

我想知道是否有一种简单的技术来扩展基本射线球体相交以包含位移数据......

最佳答案

enter image description here

我知道距离第一次发帖已经过去了 12 年,但我已经在这里上传了这个问题的完整解决方案: https://github.com/ramakarl/just_math

请参阅 math_displace_sphere 的示例。此光线追踪任意细节的位移球体地形,无需任何网格。纯CPU代码,可以移植到着色器/GPU。麻省理工学院许可。

解决方案是沿着射线行进,同时将射线样本点投影回经纬度,并对地形纹理进行采样以确定该样本处的位移高度。高度是相对于球体中心指定的。

伪代码:

for ( ; ray_hgt >= terrain_hgt && ray_hgt <= shell_hgt; ) { 

sample += ray_dir * dt;

ray_hgt = (sample - sphere_center).Length();

// given sample, compute surface_pnt and lat, long
ComputeSphereUV ( sample, surface_pnt, lat, long );

pixel_val = terrain_map->GetPixelUV ( lat, long ).x;

terrain_hgt = sphere_radius + pixel_val * terrain_depth;
}

关于graphics - 使用位移贴图对球体进行光线追踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4476669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com