Unity3d 与sketchfab/unit3d/Iray相比,低多边形模型tris的渲染在three.js中显示非常硬/标记
我用一个干净的边缘流模型和地图编辑了这篇文章,如果这有助于获得反馈的话,你可以访问这些模型和地图。对于这种情况,我也可以复制硬标记边缘问题: 我发现three.js中的渲染结果显示了低多边形对象的非常硬的标记多边形,我将其与sketchfab、unity3d和Iray渲染结果进行比较 以下是maya中显示的边流快照: 以下是模型在maya的“视图”面板(未细分)中的外观: 下面是用红色框标记的three.js渲染的快照,更值得注意 这里的sketchfabs没有阴影/后处理过滤器 在这里,Iray在实体画师中渲染: 下面是Unity render: 如果需要检查网格/边流,以下是fbx: 我还添加了法线贴图,因为我认为问题可能与我的three.js设置有关: 反照率图: 我正在重用envmap hdr示例和hdr设置 有人能分享一些我可以尝试不同的想法吗 谢谢你的帮助,塞吉奥 我尝试了以下方法: 我在maya中软化了边。 我也尝试了下面的行单独和合并,但没有结果 //vaseMesh.geometry.mergeVertices;和//vaseMesh.geometry.computeVertexNormals normalScale在材质方面似乎是最好的。normalScale.x=-1 我也尝试过,但没有hdr或色调映射设置,结果与displacement three.js示例相同Unity3d 与sketchfab/unit3d/Iray相比,低多边形模型tris的渲染在three.js中显示非常硬/标记,unity3d,three.js,render,substance,Unity3d,Three.js,Render,Substance,我用一个干净的边缘流模型和地图编辑了这篇文章,如果这有助于获得反馈的话,你可以访问这些模型和地图。对于这种情况,我也可以复制硬标记边缘问题: 我发现three.js中的渲染结果显示了低多边形对象的非常硬的标记多边形,我将其与sketchfab、unity3d和Iray渲染结果进行比较 以下是maya中显示的边流快照: 以下是模型在maya的“视图”面板(未细分)中的外观: 下面是用红色框标记的three.js渲染的快照,更值得注意 这里的sketchfabs没有阴影/后处理过滤器 在这里,Ira
由于@Mugen87给出了答案,所以删除了设置flatShading为true就成功了
干杯,塞尔吉奥我发现这类问题通常来自不良的多边形流或重叠顶点。如果没有看到网格,很难知道是哪个。谢谢你的评论@2pha。我用一个干净的边缘流模型更新了这篇文章,它复制了硬标记的边缘。我还添加了fbx,如果这有助于获得一些指导,请。渲染结果比较将表明my three.js设置中存在错误?
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");