2016-12-26 4 views
1

Three.js Blender Export 도구로 three.js로 블렌더 모델을 가져 오려고합니다. 그러나 오류가 발생합니다 : Uncaught TypeError: Cannot read property 'length' of undefined.Three.js 블렌더 모델 가져 오기 : 캐치되지 않음 TypeError : 정의되지 않은 'length'속성을 읽을 수 없습니다.

다른 스택 오버플로 스레드를 검색해 보았습니다. 대신 THREE.ObjectLoader()을 사용하려고했습니다. 그러나이 오류 대신 Uncaught TypeError: Cannot read property 'type' of undefined이 표시됩니다.

현재 three.js의 R83 버전을 사용 중입니다. 여기

내 코드입니다 : (I이 tutorial를 다음과 같은거야.)

var scene, camera, renderer; 

var WIDTH = window.innerWidth; 
var HEIGHT = window.innerHeight; 

var speed = 0.01; 

function init() { 
    scene = new THREE.Scene(); 

    initMesh(); 
    initCamera(); 
    initLights(); 
    initRenderer(); 

    document.body.appendChild(renderer.domElement); 
} 

function initCamera() { 
    camera = new THREE.PerspectiveCamera(70, WIDTH/HEIGHT, 1, 10); 
    camera.position.set(0, 3.5, 5); 
    camera.lookAt(scene.position); 
} 

function initRenderer() { 
    renderer = new THREE.WebGLRenderer({alpha: true}); 
    renderer.setSize(WIDTH, HEIGHT); 
} 

function initLights() { 
    var light = new THREE.AmbientLight(0xFFFFFF); 
    scene.add(light); 
} 

var mesh = null; 
function initMesh() { 
    var loader = new THREE.JSONLoader(); 
    loader.load('js/cube.json', function(geometry, materials) { 
     mesh = new THREE.Mesh(geometry, new THREE.MeshFaceMaterial(materials)); 
     mesh.scale.x = mesh.scale.y = mesh.scale.z = 0.75; 
     mesh.translation = THREE.GeometryUtils.center(geometry); 
     scene.add(mesh); 
    }); 
} 

function rotateMesh() { 
    if (!mesh) { 
     return; 
    } 

    mesh.rotation.x -= SPEED * 2; 
    mesh.rotation.y -= SPEED 
    mesh.rotation.z -= SPEED * 3; 
} 

function render() { 
    requestAnimationFrame(render); 
    rotateMesh(); 
    renderer.render(scene, camera); 
} 

init(); 
render(); 

이이처럼 내 cube.json이 모습입니다 : 내가 수출 설정을 변경하여이 문제를 해결

{ 
    "metadata":{ 
     "generator":"io_three", 
     "type":"BufferGeometry", 
     "position":23382, 
     "version":3, 
     "normal":23382 
    }, 
    "data":{ 
     "attributes":{ 
      "position":{ 
       "type":"Float32Array", 
       "itemSize":3, 
       "array":[...] 
      }, 
      "normal":{ 
       "type":"Float32Array", 
       "itemSize":3, 
       "array":[...] 
      } 
     }, 
     "index":{ 
      "type":"Uint16Array", 
      "itemSize":1, 
      "array":[...] 
     } 
    } 
} 

답변

7

Type: BufferGeometry에서 Type: Geometry까지 누군가가 같은 문제에 빠지면 도움이되기를 바랍니다.

+2

감사합니다. 내 하루를 구했어. –

0

수출 업체 설정에 "장면"을 포함 시키면 해당 문제가 해결되고 Buffergeometry로 내보내고 문제없이 ObjectLoader로 Three.js에서 읽을 수 있습니다.

관련 문제