gpt4 book ai didi

javascript - 如果我没有 .mtl,是否可以加载带有颜色的 .obj 文件?

转载 作者:行者123 更新时间:2023-12-05 05:43:43 25 4
gpt4 key购买 nike

我是 three.js 的新手,我遇到了这个问题。我对我的脸进行了 3D 扫描,结果只给我 .obj 文件。如果我在 Meshlab 模型上打开该文件,它就会带有颜色。但在我将它加载到 three.js 上后,它没有纹理。

            

// Loader

const loader = new OBJLoader();

loader.load( './models/scene.obj',
function ( OBJ ) {

var boundingBox = new THREE.Box3().setFromObject( OBJ );
boundingBox.getCenter( OBJ.position ).negate();

scene.add( OBJ );

},



function ( xhr ) {

console.log( ( xhr.loaded / xhr.total * 100 ) + '% loaded' );

},


function ( error ) {

console.log( 'An error happened' );

}
);

It's how my 3D model looks on three.js

也是一面倒的一面

也尝试过此解决方案,但它不起作用。出现“发生错误”而没有任何解释

objLoader.load('assets/faceimage9.obj', function(object) {
scene.add(object);
object.traverse(node => {
if (node.material) {
node.material.vertexColors = true;
}
});
});

感谢您的回答!

编辑:我的 .obj 最初看起来像 ~50000 行 My obj然后像这样enter image description here

这是完整的 .obj https://drive.google.com/drive/folders/1x9MaZVWHTa-wSDkv8xzdRKU-ASPuJLOw?usp=sharing

最佳答案

OBJ 资源定义了 [0,255] 范围内的顶点颜色,THREE.OBJLoader 不支持。颜色数据必须在规范化的 [0,1] 范围内定义。不幸的是,OBJ 规范并未提及顶点颜色,因此应用程序无法始终如一地导出此类数据。

three.js 中改进 Assets 渲染的一个简单修复是:

objLoader.load('assets/faceimage9.obj', function(object) {
scene.add(object);
object.traverse(node => {
if (node.material) {
node.material.side = THREE.BackSide;
}
});
});

这样,面应该正确显示(但没有顶点颜色)。

关于javascript - 如果我没有 .mtl,是否可以加载带有颜色的 .obj 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71771936/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com