javascript - computeVertexNormals 不适用于 JsonLoader 中的模型

标签 javascript three.js

即使我已经有了computeVertexNormals,模型也始终显示在FlatShading中。模型以非法线导出进行优化,通过JsonLoader加载到3JS中,并转换为BufferGeometry。

Material 已经是SmoothShading。请参阅此 jsFiddle 以获得更好的演示:http://jsfiddle.net/2w9Lkjbm/6/

最佳答案

方法

bufferGeometry.fromGeometry( geometry );

返回非索引的BufferGeometry

也称为“三 Angular 汤”,非索引 BufferGeometry 没有共享顶点,因此 computeVertexNormals() 将所有顶点法线设置为与面法线相同.

就您而言,您需要在原始几何图形上调用 computeVertexNormals() -- 在转换为 BufferGeometry 之前:

model.geometry.computeVertexNormals();

var bufferGeometry = new THREE.BufferGeometry();

bufferGeometry.fromGeometry( model.geometry );

更新了 fiddle :http://jsfiddle.net/2w9Lkjbm/8/

三.js r.85

关于javascript - computeVertexNormals 不适用于 JsonLoader 中的模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43624693/

相关文章:

javascript - 使用光线转换器添加延迟

javascript - 多个 Canvas 和 JSON 加载几何图形时出现 Three.js 错误

webgl - 将夜灯添加到 WebGL/Three.js 地球

javascript - 三个 js 导入的 OBJ 模型 [.CommandBufferContext]RENDER WARNING : Render count or primcount is 0

javascript - PHP从Javascript加密流文件

javascript - 如何使用指定的键获取值?

javascript - 为什么这个数组不按照对应的JS显示呢?

javascript - 三个 js 场景的 UIWebView Javascript 垃圾收集

javascript - 如何通过javascript中的expiry_time检查 token 的过期时间

JavaScript 错误 : Microsoft JScript runtime error: Object expected