Browse Source

fix:添加模型

feature/three
guoapeng 3 months ago
parent
commit
1c519724f2
  1. BIN
      public/013.stl
  2. BIN
      public/015.stl
  3. BIN
      public/018.stl
  4. 100
      src/views/dataModel/index.vue

BIN
public/013.stl

BIN
public/015.stl

BIN
public/018.stl

100
src/views/dataModel/index.vue

@ -1,6 +1,7 @@
<script setup lang="ts">
import * as THREE from 'three'
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls'
import { STLLoader } from 'three/examples/jsm/loaders/STLLoader'
import { onMounted, ref } from 'vue'
const container = ref<HTMLDivElement>()
@ -8,11 +9,12 @@ let scene: THREE.Scene
let camera: THREE.PerspectiveCamera
let renderer: THREE.WebGLRenderer
let controls: OrbitControls
// let twinModel: THREE.Group //
let mesh: THREE.Mesh
const initThree = () => {
scene = new THREE.Scene()
scene.background = new THREE.Color('black')
scene.background = new THREE.Color('#ccc')
//
camera = new THREE.PerspectiveCamera(
75,
@ -22,6 +24,7 @@ const initThree = () => {
)
camera.position.set(292, 223, 185)
camera.lookAt(0, 0, 0)
//
renderer = new THREE.WebGLRenderer({ antialias: true })
renderer.setSize(800, 500)
@ -31,26 +34,93 @@ const initThree = () => {
controls = new OrbitControls(camera, renderer.domElement)
controls.enableDamping = true
//
const geometry = new THREE.BoxGeometry(50, 50, 50)
const material = new THREE.MeshBasicMaterial({
color: 0x0000FF,
})
const mesh = new THREE.Mesh(geometry, material)
scene.add(mesh)
// AxesHelper
const axesHelper = new THREE.AxesHelper(250)
scene.add(axesHelper)
//
const ambientLight = new THREE.AmbientLight(0xFFFFFF, 0.8)
scene.add(ambientLight)
//
const pointLight = new THREE.PointLight(0xFFFFFF, 1)
pointLight.position.set(5, 5, 5)
scene.add(pointLight)
renderer.render(scene, camera)
// STL
const loader = new STLLoader()
loader.load('./013.stl', (geometry) => {
console.log('geometry', geometry)
//
const material = new THREE.MeshStandardMaterial({
color: 'blue',
metalness: 0.7,
roughness: 0.2,
})
//
mesh = new THREE.Mesh(geometry, material)
//
const box = new THREE.Box3().setFromObject(mesh)
const center = box.getCenter(new THREE.Vector3())
mesh.position.sub(center) //
mesh.scale.set(0.5, 0.5, 0.5)
scene.add(mesh)
})
loader.load('./018.stl', (geometry) => {
console.log('geometry', geometry)
//
const material = new THREE.MeshStandardMaterial({
color: 0x666666,
metalness: 0.7,
roughness: 0.2,
})
//
mesh = new THREE.Mesh(geometry, material)
//
const box = new THREE.Box3().setFromObject(mesh)
const center = box.getCenter(new THREE.Vector3())
mesh.position.sub(center) //
mesh.scale.set(0.5, 0.5, 0.5)
scene.add(mesh)
})
loader.load('./015.stl', (geometry) => {
console.log('geometry', geometry)
//
const material = new THREE.MeshStandardMaterial({
color: 0x666666,
metalness: 0.7,
roughness: 0.2,
})
//
mesh = new THREE.Mesh(geometry, material)
//
const box = new THREE.Box3().setFromObject(mesh)
const center = box.getCenter(new THREE.Vector3())
mesh.position.sub(center) //
mesh.scale.set(0.5, 0.5, 0.5)
scene.add(mesh)
})
// AxesHelper
const axesHelper = new THREE.AxesHelper(250)
scene.add(axesHelper)
//
window.addEventListener('keydown', (event) => {
if (event.key === 'ArrowUp') {
//
camera.position.multiplyScalar(0.9)
}
else if (event.key === 'ArrowDown') {
//
camera.position.multiplyScalar(1.1)
}
})
//
const animate = () => {
requestAnimationFrame(animate)
controls.update()
renderer.render(scene, camera)
}
animate()
}
onMounted(() => {

Loading…
Cancel
Save