Спасибо fritx за этот ответ, вставленный сюда с: https://github.com/fritx
Спасибо за использование библиотеки!
На данный момент компонент предполагает, что сетка существует при его создании, например <object3d :obj="mesh"></object3d>
.
Если вы используете асинхронные загрузчики, ваш код может выглядеть так:
<template>
<object3d v-if="mesh" :obj="mesh"></object3d>
</template>
<script>
export default {
data () {
return {
mesh: null // <----
}
},
methods: {
createBox () {
objLoader.load(xxx, geometry => {
let mesh = new THREE.Mesh(geometry, material)
this.mesh = mesh // <----
})
}
}
}
</script>
Больше фрагментов по ключевому слову user:fritx "Loader.load(":
(включая код как в vue-threejs, так и в react-threejs)
https://github.com/search?q=user%3Afritx+%22Loader%28%29.load%28%22&ref=opensearch&type=Code
В «ExSpaceFighter.js» у меня также был фрагмент с MTLLoader и OBJLoader:
https://github.com/fritx/react-threejs/blob/6e2317d1e616ed5562f889de6b885deffb14d18a/example/ExSpaceFighter.js#L18-L31
Надеюсь, это поможет.
var mtlLoader = new MTLLoader();
mtlLoader.setBaseUrl( 'SpaceFighter03/' )
mtlLoader.setPath( 'SpaceFighter03/' )
mtlLoader.load( 'SpaceFighter03.mtl', ( materials ) => {
materials.preload();
var objLoader = new OBJLoader();
objLoader.setMaterials( materials );
objLoader.setPath( 'SpaceFighter03/' )
objLoader.load( 'SpaceFighter03.obj', ( group ) => {
const body = group.children[0]
body.material.color.set(0xffffff)
this.setState({ body })
})
})
Если я ошибаюсь, дайте мне знать ;)
person
MachuPichu
schedule
15.03.2017