![]() |
1
6
我的看法如下: 紫外坐标 此外,如果模型带有纹理蒙皮,则UV需要与蒙皮匹配,因此在这种情况下,它们可能不会在运行时计算。 理论上,您可以在加载期间在几何体明暗器甚至CPU上预计算它们。但是有一件事:游戏中的真实模型通常不是原始模型,但是 在游戏中使用的最终模型中,顶点数较少,但逐顶点法线是从原始的高多边形模型(也用于环境光遮挡计算等)计算得更精确的。因此,预先计算正态分布也是可行的。 而且,在很多游戏中 使用每texel法线贴图的纹理 (通常在切线空间中,AFAIK)与每个模型的颜色纹理一起提供,以便稍后在像素着色器中进行并行映射。 所以看来我的建议很明确- 获取预计算数据 |
![]() |
2
3
一般来说,你需要尽可能多地进行预计算。大多数引擎都会有一个自定义的编写工具,可以从3D软件中获取原始数据,并将其转换为运行时的格式(添加切线和双切线等)。 然而。。。 在某些情况下,逐顶点内存开销可能是一个特殊的性能问题。这是因为有一个与移动系统数据相关的开销——它是“隐藏”的,因为它不是添加到着色器中的显式指令,所以它更高级一些。 在这些情况下 双切线 双切线 适合于此,因为它们可以从 正常的 , 以及 方向性标志 --它们都是单个顶点的属性。 ,一些 紫外映射 法线 , 紫外线 第一次 切线 几乎总是预先计算出除了非常专业的几何类型之外的所有类型。 请记住,模型在Max、Maya或Blender中的表示与运行时版本非常不同。 编辑软件
运行时间 (用于DirectX、OpenGL等)
一般来说,你会丢失很多无法重建的信息。如果您尽可能多地使用几何体的原始Max/Maya版本,则您的艺术家将最幸福。 |
![]() |
3
2
这里唯一重要的是在CPU上计算它们,而不是在GPU上,因为你在GPU上一次又一次地计算每一帧,这与在CPU上只计算一次相比是一种浪费。据我所知,所有的3D渲染系统都会在CPU上计算一次法线等,保存到文件中,然后加载并发送到GPU进行工作。 |
![]() |
4
1
在运行时计算它并不简单,因为可能需要比当前三角形数据更多的数据来获得正确的切线空间。 |
![]() |
5
0
UV和法线通常由艺术家控制。可以使用UV的渐变计算切线和二法线。一直计算正切和二次法线往往有点昂贵,因此通常根据基础几何体预先计算一次。最好在装船前减少装货时间。 |
![]() |
Djé Rèm · 三js:在曲面上创建一个对象,并沿该曲面的法线对齐 7 年前 |
|
lotfishtaine · 如何计算云中每个点的法线 9 年前 |
|
Robomoo · 通常如何存储正常数据? 10 年前 |
![]() |
Ionel Lupu · 八顶点立方体的法向量 10 年前 |