使用vue2和three.js如何放置多个obj模型,如何给每个模型赋值,并且在点击的时候获取到赋的这些值,他的代码是什么
时间: 2023-03-29 16:04:44 浏览: 116
vue使用three.js引入外部obj,mtl模型.zip
您好,关于使用vue2和three.js放置多个obj模型,可以使用Three.js提供的OBJLoader加载模型,然后使用Vue2的组件化思想,将每个模型封装成一个组件,给每个组件传递不同的属性值。在点击模型时,可以使用Vue2提供的事件绑定机制,触发相应的事件并获取到对应的属性值。以下是示例代码:
<template>
<div>
<model v-for="(model, index) in models" :key="index" :src="model.src" :name="model.name" @click="handleClick(model)"></model>
</div>
</template>
<script>
import * as THREE from 'three'
import { OBJLoader } from 'three/examples/jsm/loaders/OBJLoader'
export default {
name: 'ModelList',
components: {
Model: {
props: ['src', 'name'],
data() {
return {
model: null
}
},
mounted() {
const loader = new OBJLoader()
loader.load(this.src, (obj) => {
this.model = obj
this.$emit('loaded')
})
},
methods: {
handleClick() {
this.$emit('click', {
name: this.name,
position: this.model.position,
rotation: this.model.rotation,
scale: this.model.scale
})
}
},
render(h) {
return h('div')
}
}
},
data() {
return {
models: [
{ src: 'model1.obj', name: 'model1' },
{ src: 'model2.obj', name: 'model2' },
{ src: 'model3.obj', name: 'model3' }
]
}
},
methods: {
handleClick(model) {
console.log(model)
}
}
}
</script>
阅读全文