Я использую Nuxtjs + Threejs.Скрипт по умолчанию с сайта показывает geometry
и анимацию правильно.Я хочу использовать пользовательскую модель, поэтому я устанавливаю OBJLoader
и MTLLoader
, используя npm
, пакеты установлены успешно.template:
<template>
<div id="three" class="three">
</div>
</template>
Код сценария:
<script>
import * as Three from 'three'
import { MTLLoader, OBJLoader } from 'three-obj-mtl-loader'
export default {
data() {
return {
camera: null,
scene: null,
renderer: null,
mesh: null,
mtl: null,
obj: null
}
},
methods: {
init: function() {
let container = document.getElementById('three')
this.camera = new Three.PerspectiveCamera(70, container.clientWidth/container.clientHeight, 0.01, 10)
this.camera.position.z = 1
this.scene = new Three.Scene()
this.mtl = new MTLLoader()
this.obj = new OBJLoader()
this.mtl.load('/mesh/sources/Coffee Hot Cup Sketchfab.mtl', (materials) => {
materials.preload()
this.obj.setMaterials(materials)
this.obj.load('/mesh/sources/Coffee Hot Cup Sketchfab.obj', (object) => {
this.scene.add(object)
})
})
this.renderer = new Three.WebGLRenderer({antialias: true, alpha: true})
this.renderer.setSize(container.clientWidth, container.clientHeight)
this.renderer.setClearColor( 0x000000, 0 )
this.renderer.render(this.scene, this.camera)
container.appendChild(this.renderer.domElement)
}
},
mounted() {
this.init()
}
}
</script>
Проблема в том, что когда я хочу использовать свою пользовательскую модель, объект не отображается, но говорит, что объект загружен успешно.Я не знаю, если это с пути, он должен показывать не найденную ошибку, но это не так.Как мне это исправить?Спасибо!