Search code examples
three.jscollada

ThreeJS doesn't display dae 3D model


I'm new with WebGL and Three.js. I'm trying to import a simple 3D model which I created in Blender and save as .dae. I'm testing locally with Python http server. Background color is ok, but I can't display my 3D model on the scene. In Chrome I see error in Console:

Uncaught TypeError: THREE.UV is not a function - ColladaLoader.js:2413 
Mesh.handlePrimitive @ ColladaLoader.js:2413  
Mesh.parse @ ColladaLoader.js:2317  
Geometry.parse @ ColladaLoader.js:2233 
parseLib @ ColladaLoader.js:235 
parse @ ColladaLoader.js:130 
req.onreadystatechange @ ColladaLoader.js:73

<html>
<head>
    <title>3D object.js</title>
</head>
<body>
<script src="js/three.min.js"></script>
<script src="js/ColladaLoader.js"></script>
<script>

    var renderer = new THREE.WebGLRenderer();
    renderer.setSize(800, 600);
    document.body.appendChild(renderer.domElement);

    var scene = new THREE.Scene();

    var camera = new THREE.PerspectiveCamera(
            35,             // Field of view
            800 / 600,      // Aspect ratio
            0.1,            // Near plane
            1000           // Far plane
    );

    camera.position.set(-15, 1000, 10);
    camera.lookAt(scene.position);

    var loader = new THREE.ColladaLoader();
    loader.options.convertUpAxis = true;
    loader.load('models/MyModel.dae', function(collada) {
        var dae = collada.scene;
        var skin = collada.skins[0];
        dae.position.set(0,0,0);
        dae.scale.set(1,1,1);
        scene.add(dae);
    });

    var dirLight = new THREE.DirectionalLight(0xffffff, 1);
    dirLight.position.set(100, 100, 50);
    scene.add(dirLight);

    Render();

    function Render() {
        renderer.setClearColor(0xffe5e5, 1);
        renderer.render(scene, camera);
    }
</script>
</body>

</html>

Can someone give me any idea what to do? I already spend hours trying to find solution without success.

EDIT: I downloaded another ColladaLoader.js and now I haven't error anymore. But still I can't see 3D model on the scene.


Solution

  • Looks like you are only rendering the scene once. Missing requestAnimationFrame( func ) on your render function

    Look under "Rendering the scene" http://threejs.org/docs/#Manual/Introduction/Creating_a_scene