Exportar cena de três.editor e importação do js

Eu faço uma cena simples usando o editor de três.j's a trabalhar na zona. Quando terminar a cena, vou para "file" -> "Export scene" e o editor gera objeto/cena JSON. Agora vou copiar e colar este código e salvar como um .js? Como posso importar esta cena no meu projecto preservando as texturas?

Obrigado !

Author: user3482129, 2014-03-31

2 answers

A resposta de Develotecca mostra como carregar um três básico.geometria de um ficheiro JSON. No entanto, pela minha experiência, as geometrias exportadas pelos três.editor js são do tipo BufferGeometry (que é mais eficiente do que uma geometria básica), então eles precisam ser carregados usando um três.Buffergeometrilloader em vez de um três.JSONLoader.

Além disso, a questão é sobre salvar e carregar cenas, não geometrias. JSONLoader é projetado apenas para carregar geometrias básicas, e uma geometria contém apenas um único modelo de informação por vértice e por face (que inclui números materiais para indexação em um MeshfaceMatrial, mas nenhuma outra informação material, e por isso precisa ser combinado com um material antes da utilização). Se você tentar carregar uma cena inteira usando JSONLoader, em vez de apenas uma parte de um objeto na cena, o carregador deve este lugar e entregar a mensagem

Três.Parece ser uma cena. Usa três.Mais SceneLoader em vez disso.'

Ao registo da consola. Isto dá uma grande pista para a maneira correta de proceder.

Carregador de cena está documentado em http://threejs.org/docs/#Reference/Loaders/SceneLoader (embora a documentação é atualmente incompleta), e de seu código fonte está em https://github.com/mrdoob/three.js/blob/master/src/loaders/SceneLoader.js e um exemplo de seu uso é a http://threejs.org/examples/webgl_loader_scene.html

Tudo isso é muito para percorrer. Eu não ... na verdade, usado SceneLoader-me ainda, mas pretendo em breve, mas pelo que eu li até agora parece semelhante ao BufferGeometryLoader ou JSONLoader só porque você está carregando uma cena inteira em vez de apenas parte do que você tem
scene = loaded.scene

Em vez de

scene.add()

E você pode precisar de incluir outros carregadores e manipuladores para quaisquer geometrias especializadas que a sua cena usa, por exemplo

<script src="js/loaders/ColladaLoader.js"></script>
..
loader.addHierarchyHandler( "dae", THREE.ColladaLoader );

Para Collada.

 3
Author: MTGradwell, 2017-09-07 10:16:45

Carregar os dados JSON com:

var jsonLoader = new THREE.JSONLoader();
jsonLoader.load("models/object.json", addModelToScene);

function addModelToScene(geometry, materials) {
    var material = new THREE.MeshFaceMaterial(materials);
    var object = new THREE.Mesh(geometry, material);
    object.scale.set(10, 10, 10);
    scene.add(object);
}
Exemplo: http://stemkoski.github.io/Three.js/Model.html

Outro exemplo: http://all.develoteca.com/builder/

 1
Author: Develoteca, 2017-09-07 10:18:46