Browse Source

fix:添加模型1

feature/three
guoapeng 3 months ago
parent
commit
7d0975b792
  1. 1
      package.json
  2. 164
      src/views/dataModel/index.vue

1
package.json

@ -26,6 +26,7 @@
"prettier": "prettier --write ."
},
"dependencies": {
"@dataview/datav-vue3": "0.0.0-test.1672506674342",
"@element-plus/icons-vue": "^2.3.1",
"@types/three": "^0.176.0",
"autoprefixer": "^10.4.20",

164
src/views/dataModel/index.vue

@ -1,4 +1,5 @@
<script setup lang="ts">
import { BorderBox11 } from '@dataview/datav-vue3'
import * as THREE from 'three'
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls'
import { STLLoader } from 'three/examples/jsm/loaders/STLLoader'
@ -10,10 +11,13 @@ let camera: THREE.PerspectiveCamera
let renderer: THREE.WebGLRenderer
let controls: OrbitControls
let mesh: THREE.Mesh
//
const modelGroup = new THREE.Group()
const initThree = () => {
scene = new THREE.Scene()
scene.background = new THREE.Color('#ccc')
// scene.background = new THREE.Color('#ccc')
scene.background = new THREE.Color('#041622')
//
camera = new THREE.PerspectiveCamera(
@ -32,59 +36,83 @@ const initThree = () => {
container.value?.appendChild(renderer.domElement)
controls = new OrbitControls(camera, renderer.domElement)
renderer.render(scene, camera)
controls.enableDamping = true
controls.addEventListener('change', () => {
renderer.render(scene, camera) //
})//
//
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)
// const pointLight = new THREE.PointLight(0xFFFFFF, 1)
// pointLight.position.set(5, 5, 5)
// scene.add(pointLight)
// 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('./013.stl', (geometry) => {
// console.log('geometry', geometry)
// //
// const material = new THREE.MeshPhysicalMaterial({
// color: '#b0b0b0', //
// metalness: 1, //
// roughness: 0.1, //
// clearcoat: 1, //
// clearcoatRoughness: 0.05, //
// reflectivity: 1, //
// ior: 1.5, //
// })
// //
// 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.position.set(10, 0, 0)
// mesh.scale.set(0.2, 0.2, 0.2)
// scene.add(mesh)
// modelGroup.add(mesh)
// })
// loader.load('./018.stl', (geometry) => {
// console.log('geometry', geometry)
// //
// const material = new THREE.MeshPhysicalMaterial({
// color: '#b0b0b0', //
// metalness: 1, //
// roughness: 0.1, //
// clearcoat: 1, //
// clearcoatRoughness: 0.05, //
// reflectivity: 1, //
// ior: 1.5, //
// })
// //
// 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)
// modelGroup.add(mesh)
// })
loader.load('./015.stl', (geometry) => {
loader.load('./013.stl', (geometry) => {
console.log('geometry', geometry)
//
// const material = new THREE.MeshPhysicalMaterial({
// color: '#b0b0b0', //
// metalness: 1, //
// roughness: 0.1, //
// clearcoat: 1, //
// clearcoatRoughness: 0.05, //
// reflectivity: 1, //
// ior: 1.5, //
// })
const material = new THREE.MeshStandardMaterial({
color: 0x666666,
color: 'red',
metalness: 0.7,
roughness: 0.2,
})
@ -94,33 +122,35 @@ const initThree = () => {
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)
// mesh.scale.set(0.5, 0.5, 0.5)
scene.add(mesh)
modelGroup.add(mesh)
})
modelGroup.position.set(0, 0, 0)
// AxesHelper
const axesHelper = new THREE.AxesHelper(250)
const axesHelper = new THREE.AxesHelper(100)
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)
}
})
// //
// 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()
// const animate = () => {
// requestAnimationFrame(animate)
// controls.update()
// renderer.render(scene, camera)
// }
// animate()
}
onMounted(() => {
@ -129,9 +159,21 @@ onMounted(() => {
</script>
<template>
<div ref="container" />
<div class="data-content">
<BorderBox11 class="box" :color="['#1A4468', '#163A5A']" background-color="#041622" title="石墨消解仪">
<div ref="container" />
</BorderBox11>
</div>
</template>
<style scoped lang="scss">
.data-content {
padding: 0 !important;
background: rgba(0,0,0,0) !important;
}
.box {
width: 100%;
height: 100%;
padding: 60px 20px 30px;
}
</style>
Loading…
Cancel
Save