1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
| import './style.css' import * as THREE from 'three' import { OrbitControls } from 'three/addons/controls/OrbitControls.js'; import { FBXLoader } from 'three/addons/loaders/FBXLoader.js'; import Stats from 'three/addons/libs/stats.module';
const scene = new THREE.Scene() scene.add(new THREE.AxesHelper(5))
const light = new THREE.PointLight(0xffffff, 20) light.position.set(0.8, 1.4, 1.0) scene.add(light)
const ambientLight = new THREE.AmbientLight(0xffffff, 5) scene.add(ambientLight)
const camera = new THREE.PerspectiveCamera( 100, window.innerWidth / window.innerHeight, 0.1, 1000 ) camera.position.set(0.8, 0.6, 1.0)
const renderer = new THREE.WebGLRenderer({ alpha: true }) renderer.setSize(window.innerWidth, window.innerHeight) document.body.appendChild(renderer.domElement)
const controls = new OrbitControls(camera, renderer.domElement) controls.enableDamping = true controls.target.set(0, 0.6, 0)
const fbxLoader = new FBXLoader() fbxLoader.load( 'models/example.fbx', (object) => { object.scale.set(.005, .005, .005) scene.add(object) }, (xhr) => { console.log((xhr.loaded / xhr.total) * 100 + '% loaded') }, (error) => { console.log(error) } )
window.addEventListener('resize', onWindowResize, false) function onWindowResize() { camera.aspect = window.innerWidth / window.innerHeight camera.updateProjectionMatrix() renderer.setSize(window.innerWidth, window.innerHeight) render() }
const stats = new Stats() document.body.appendChild(stats.dom)
function animate() { requestAnimationFrame(animate) controls.update() render() stats.update() }
function render() { renderer.render(scene, camera) }
animate()
|