OBL オブジェクトをロードしようとしていますが、事前に指定されたコンテナー (プレーン) にテクスチャを表示します。ただし、オブジェクトをロードした後、次のエラーが発生し始めます。
THREE.WebGLRenderer 58
XHR finished loading: "http://localhost:8000/original-material/room2/soba-5-2.obj".
about to traverse...
about to add to scene
WebGLRenderingContext: GL ERROR :GL_INVALID_OPERATION : glDrawElements: attempt to access out of range vertices in attribute 0
WebGL: too many errors, no more errors will be reported to the console for this context.
シーンに何かを追加する前に (事前に) マテリアル属性を変更していましたが、 3 つの JS マップ マテリアルに続いてWebGL 警告が発生し、次のフラグを明示的に設定し始めました。
child.material.needsUpdate = true;
child.geometry.buffersNeedUpdate = true;
child.geometry.uvsNeedUpdate = true;
それにもかかわらず、問題は解決しません。何か案は?
コード
var container_re_match = /container_/
console.log('about to traverse...');
data.traverse(function(child){
if (child instanceof THREE.Mesh) {
child.material = new THREE.MeshPhongMaterial({
ambient: 0xff0000, color: 0xffffff, specular: 0xffffff, shininess: 30, shading: THREE.SmoothShading});
if (child.parent.name.match(container_re_match)) {
var container_data = CONTAINER_DATA[child.parent.name]
child.material.map = THREE.ImageUtils.loadTexture(container_data.image);
child.material.needsUpdate = true;
child.geometry.buffersNeedUpdate = true;
child.geometry.uvsNeedUpdate = true;
}
}
});
console.log('about to add to scene');
scene.add(data) // Adding only after everything has been processed
}