Рендер низкополигональной модели трис показывает очень жесткий/отмеченный в three.js по сравнению с sketchfab/unit3d/Iray

Я отредактировал этот пост, указав чистую модель краевого потока и карты, к которым вы можете получить доступ, если это поможет получить обратную связь. Я могу воспроизвести проблему с резко отмеченными краями и для этого случая:

Я обнаружил, что результат рендеринга в three.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

вот скетчфабс без теней/фильтров постобработки

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

здесь Iray визуализирует в художнике по субстанции: https://drive.google.com/open?id=1cXJzw780-kWH0nANy5ekM0HjRKAdaVQ2

Вот рендер Unity: https://drive.google.com/open?id=1lLFLd8UT48OSvxJcp7arwygZZISSaHkS

Вот 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.

Может кто-нибудь поделиться мыслями о том, что я могу попробовать по-другому?

Спасибо за помощь, Серхио.

Я пробовал следующее: Я смягчил края в Maya. Я также пробовал строки ниже по отдельности и комбинировал, но результата не было.

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

normalScale лучше всего подходит для material.normalScale.x = -1;

Я также пытался, но получил тот же результат без настроек hdr или тональной компрессии, как в примере смещения three.js 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.info("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.info("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");

274
1

Ответ:

Отдавая должное @ Mugen87 за ответ, удалив настройку flatShading на true, сделал это!

https://discourse.threejs.org/t/render-of-low-poly-model-tris-showing-very-hard-marked-in-three-js-compared-to-sketchfab-unit3d-iray/6829/ 2?u=mugen87

Привет, Серхио