Loading multiple objects in Three.js from Blender

I have a rather complicated form (dressed up girl), which is divided into different objects in Blender and loaded into Three.js with a JSON loader (with a little hack I made that uses compressed files instead of JSON files, since there are many vertices).

As I want to dynamically change the style of the dress from the web page, I was wondering how I can show / hide different fragments (for example, sleeves) in the scene.

I tried moving around THREE.Mesh, but no children.

When I export from Blender with a JSON exporter, I cannot see anything referring to the names of objects in JSON. Is the structure lost?

+4
source share
2 answers

, , webGL openCTM . : http://threejs.org/examples/webgl_loader_ctm.html
LZMA 93%...

JSONLoader, :

var meshes = [];
...
var loader = new THREE.JSONLoader();
var onGeometry = function(geom)
{
    var mesh = new THREE.SceneUtils.createMultiMaterialObject(geom, [material]);
    meshes.push( mesh );
    ...
    scene.add(mesh);
};

loader.load("yourfile.js", onGeometry);

,

+2

json , Blender, !

Blender .

, getObjectByName. , . , -.

:

    loader = new THREE.JSONLoader();
    loader.load( "obj/Books.json", function ( loadedObj ) {
        var surface = loadedObj.getObjectByName("Surface");
        var outline = loadedObj.getObjectByName("Outline");
        var mask = loadedObj.getObjectByName("Mask");
        scene.add(surface);
        scene.add(outline);
        scene.add(mask);
    } );

, THREE.MeshFaceMaterial, :

var mat1 = new THREE.MeshLambertMaterial( { map: texture1 } );
var mat2 = new THREE.MeshLambertMaterial( { map: texture2 } );
var materials = [mat1, mat2];
var faceMat = new THREE.MeshFaceMaterial(materials);
mesh = new THREE.Mesh( geometry, faceMat );
scene.add( mesh );

, :)

+1

All Articles