Javascript 如何在Three.js中为.obj模型添加颜色?
我正在用Three.js创建一个WebGL场景,我遇到了下一个问题:我正在尝试用Three.js加载一个.obj模型,我想向该.obj模型添加一种颜色(例如蓝色),而不是mtl纹理。我试着这样做:Javascript 如何在Three.js中为.obj模型添加颜色?,javascript,model,three.js,textures,Javascript,Model,Three.js,Textures,我正在用Three.js创建一个WebGL场景,我遇到了下一个问题:我正在尝试用Three.js加载一个.obj模型,我想向该.obj模型添加一种颜色(例如蓝色),而不是mtl纹理。我试着这样做: // instantiate a loader var loader = new THREE.OBJLoader(); // load a resource loader.load( // resource URL 'model_path.obj', // Function
// instantiate a loader
var loader = new THREE.OBJLoader();
// load a resource
loader.load(
// resource URL
'model_path.obj',
// Function when resource is loaded
function ( object ) {
scene.add( object );
}
);
但我还有一个错误,那就是:
WebGL: INVALID_VALUE: bufferData: no data
Uncaught TypeError: Cannot read property 'length' of undefined
[.CommandBufferContext]GL ERROR :GL_INVALID_VALUE : glVertexAttribPointer: size GL_INVALID_VALUE
如何更正错误,以加载蓝色的obj模型
非常感谢你 嘿,错误似乎是文件中没有顶点。OBJ文件是简单的原始文件,具有 v:::顶点 纹理坐标 vn::正常 usemtl:::定义纹理、ka(环境光)、ks(镜面反射)和kd(漫反射) 尝试将obj导入混合器,然后使用三角形面导出,如下所示: 实际上,如果不这样做,索引将以face4格式显示,如: 0/1/2/3 3/2/4/0。。。。等等 三角剖分后,它们看起来像: 0/1/2 3/2/0
因此,当您更正*.obj时,您可以在三个解析器中加载该文件,并将材料添加到子对象。您可以制作小提琴或共享obj文件吗?如果不是机密文件,我想检查一下。。??否则将很难帮助您下载此Dropbox链接中的.obj文件:它可以工作!谢谢模型已正确加载。但是现在我的问题是纹理没有加载。我的意思是,“var material=new THREE.MeshPhongMaterial({map:THREE.ImageUtils.loadTexture('path')});”方法已被弃用。当我使用TextureLoader时,不会加载纹理,而是加载随机颜色。。。为什么会发生这种情况?对我来说,纹理也加载纹理坐标有var loader=new THREE.ImageLoader(manager);load('textures/UV_Grid_Sm.jpg',函数(image){texture.image=image;texture.needsUpdate=true;});如果(child instanceof THREE.Mesh){child.material.map=texture;}我对纹理也没有问题。查看纹理是否正确映射的一种方法是在blender中加载*.obj,然后进行uv映射。质感科迪酸盐没有问题:)请随时提出任何疑问