与sketchfab / unit3d / Iray相比,渲染的低聚模型tris在three.js中显示非常硬/标记

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (195)

我已经使用干净的边缘流模型编辑了这篇文章,并且如果有助于获得反馈,您可以访问这些地图。我也可以为这种情况复制硬标记边缘问题:

我发现三个渲染结果.js显示了低多边形对象的非常难以标记的多边形,我将它与sketchfab,unity3d和Iray渲染结果进行比较。

以下是maya中显示的边缘流的快照:https://drive.google.com/open id = 1qNA4VoZf-rSyq3_MQdeZqdFC6BxsE3un

以下是该模型在maya视图面板中的外观(未细分):https://drive.google.com/open?id = 1US-fv5-v2ygReqjRPgcsQSusrAXTxVG5

这是three.js渲染的快照(红色框中标记更明显)

https://drive.google.com/open?id=1K3CIBLvA7skVUPWL0qInLcFrK74DtriK

这里sketchfabs没有阴影/后处理过滤器

https://drive.google.com/open?id=1rozZyBSU1HwPPk4EnKFyc7SVvFNXQBwz

在这里,Iray渲染物质画家:https://drive.google.com/open?id = 1cXJzw780-kWH0nany5ekM0HjRKAdaVQ2

这是Unity渲染:https//drive.google.com/open?id = 011LFLd8UT48OSvxJcp7arwygZZISsaHkS

如果你需要检查网格/边缘流,这是fbx:https://drive.google.com/open?id = 1BwljZNKL3dWJSSca6WYlqSK7os1Hp4pT

我还添加了法线贴图,因为我认为问题可能与我的three.js设置有关(?):https://drive.google.com/open?id = 149r3n9JGnb9xEJkf9Eh7ELK2bM83bJX_

反照率地图:https//drive.google.com/open?id = 1rGgDUOKbbeE6mrAlTG_6C7b8LgqQ1DF0

我正在重用envmap hdr示例和hdr设置。

有人可以分享一些我可以尝试不同的想法吗?

谢谢你的帮助,塞尔吉奥。

我尝试了以下方法:我软化了玛雅的边缘。我也分别尝试了以下几行并合并但没有结果。

//vaseMesh.geometry.mergeVertices(); 和//vaseMesh.geometry.computeVertexNormals();

normalScale在material.normalScale.x = -1时表现得最好;

我也尝试了但没有hdr或tonemapping设置的结果相同的结果三。例子https://threejs.org/examples/?q=displ#webgl_materials_displacementmap

renderer = new THREE.WebGLRenderer();
renderer.toneMapping = THREE.LinearToneMapping;

//load vase material textures once loaded
                manager.onLoad=function () {
                    material = new THREE.MeshStandardMaterial( { 
                        color: 0xffffff,
                                roughness: params.roughness,
                                metalness: params.metalness,
                                map: albedoM,
                                normalMap: normalMap,
                                normalScale: new THREE.Vector2( 1, -1 ),
                                aoMap: aoMap,
                                aoMapIntensity: 1,
                                flatShading: true,
                                side: THREE.DoubleSide
                    } );

                    var myObjectLoader = new THREE.FBXLoader(  );

                    myObjectLoader.load( "Piece1.fbx", function ( group ) {
                        console.log("On object loading");
                        var geometry = group.children[ 0 ].geometry;
                        geometry.attributes.uv2 = geometry.attributes.uv;
                        geometry.center();

                        vaseMesh = new THREE.Mesh( geometry, material );
                        vaseMesh.material=material;
                        //vaseMesh.geometry.mergeVertices();
                        //vaseMesh.geometry.computeVertexNormals();
                        material.normalScale.x = -1;
                        scene.add( vaseMesh );
                        console.log("Finished adding to scene");
                        vaseMesh.position.set(0,0,0);
                        animate();
                    } );                    
                }

                var textureLoader = new THREE.TextureLoader(manager);
                var albedoM = textureLoader.load( "vaseTextures/albedo.png");
                var normalMap = textureLoader.load( "vaseTextures/normal.png");
                var aoMap = textureLoader.load( "vaseTextures/ao.png");
提问于

扫码关注云+社区

领取腾讯云代金券