我正在创建一个小部件,该小部件将根据用户的输入从较小的“模块”中动态生成Three.js
中的建筑物。向我提供了构建“模块”-它们是在Blender中制成的,并随2.8版的GLTF导出器一起导出。我需要说的是,我是Three.js
和基于物理的渲染的新手。
在Blender
上渲染时,相邻模块看起来就像是一个具有无缝纹理的网格(这就是建模者设计它们的外观):
但是在Three.js中,我在每个模块(其本身是Mesh
的{{1}}或Group
)边框上看到这些黑线,并且失去了无缝性(请忽略照明,我现在真的不专注于它):
这些是Blender的GLTF导出器设置:
带有纹理的模型可以毫无问题地通过Mesh
导入three
。每个GLTFLoader
的输出MeshStandardMaterial
使用Mesh
,map
和normalMap
。
我尝试过:
roughnessmap
和normalMap
似乎唯一可行的方法是关闭所有3种roughnessmap
类型并使用纯色,这表明问题在某种程度上与纹理渲染有关,而不是几何形状或网格间距,但也意味着完全放弃模型纹理:
场景设置:
map
Three.js版本this.scene = new Three.Scene();
this.camera = new Three.PerspectiveCamera(75, this._aspectRatio, 0.1, 50);
this.ambientLight = new Three.AmbientLight('white', 0.5);
this.directionalLight = new Three.DirectionalLight('white', 1.5);
this.directionalLight.position.set(-20, 20, 20);
this.directionalLight.target.position.set(0, 0, 0);
(来自NPM)。
我很惊讶这些边界是如此清晰可见。我原本希望看到一些模糊的边界,但不是那样。
您是否知道是什么导致了这种影响?也许我需要为材质/纹理使用某种着色器?
任何帮助将不胜感激。