当前位置: 首页 > wzjs >正文

马云有没有学过做网站官方网站开发与定制

马云有没有学过做网站,官方网站开发与定制,做试题的网站,szhome家在深圳在 Vue 中使用 Three.js 加载模型、控制视角、添加点击事件是构建 3D 场景的常见需求。下面是一个完整的示例,演示如何在 Vue 单文件组件中实现以下功能: 使用 GLTFLoader 加载 .glb/.gltf 模型添加 OrbitControls 控制视角(旋转、缩放、平移…

在 Vue 中使用 Three.js 加载模型、控制视角、添加点击事件是构建 3D 场景的常见需求。下面是一个完整的示例,演示如何在 Vue 单文件组件中实现以下功能:

  • 使用 GLTFLoader 加载 .glb/.gltf 模型
  • 添加 OrbitControls 控制视角(旋转、缩放、平移)
  • 给模型添加点击事件

使用的技术栈

  • Vue 3 + Composition API(或 Vue 2)
  • Three.js 核心库
  • three/examples/js/loaders/GLTFLoader
  • three/examples/js/controls/OrbitControls

📦 安装依赖(如未安装)

npm install three
npm install three-gltf-loader  # 或直接引入 GLTFLoader

示例代码:Vue 单文件组件

<template><div class="model-viewer-container" ref="viewerContainer"></div>
</template><script setup>
import { ref, onMounted } from 'vue'
import * as THREE from 'three'
import { OrbitControls } from 'three/addons/controls/OrbitControls.js'
import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'const viewerContainer = ref(null)let scene, camera, renderer, controls, modelfunction init() {// 创建场景scene = new THREE.Scene()scene.background = new THREE.Color(0xeeeeee)// 创建相机const width = viewerContainer.value.clientWidthconst height = viewerContainer.value.clientHeightcamera = new THREE.PerspectiveCamera(45, width / height, 0.1, 1000)camera.position.set(0, 2, 5)// 创建渲染器renderer = new THREE.WebGLRenderer({ antialias: true })renderer.setSize(width, height)renderer.setPixelRatio(window.devicePixelRatio)viewerContainer.value.appendChild(renderer.domElement)// 添加光源const ambientLight = new THREE.AmbientLight(0xffffff, 0.6)scene.add(ambientLight)const directionalLight = new THREE.DirectionalLight(0xffffff, 0.8)directionalLight.position.set(5, 10, 7.5)scene.add(directionalLight)// 添加控制器controls = new OrbitControls(camera, renderer.domElement)controls.enableDamping = true// 加载模型const loader = new GLTFLoader()loader.load('/models/test.glb', // 替换为你的模型路径(gltf) => {model = gltf.scenescene.add(model)// 添加点击事件监听window.addEventListener('click', onClick)},undefined,(error) => {console.error('An error occurred while loading the model:', error)})// 渲染循环function animate() {requestAnimationFrame(animate)controls.update()renderer.render(scene, camera)}animate()
}// 点击事件处理函数
function onClick(event) {if (!model) return// 计算鼠标归一化坐标const mouse = new THREE.Vector2()mouse.x = (event.clientX / window.innerWidth) * 2 - 1mouse.y = -(event.clientY / window.innerHeight) * 2 + 1// 创建射线const raycaster = new THREE.Raycaster()raycaster.setFromCamera(mouse, camera)// 获取模型中的所有可交互对象const intersects = raycaster.intersectObject(model, true)if (intersects.length > 0) {console.log('点击了模型!', intersects[0].object)alert('你点击了模型上的一个部件')}
}// 响应窗口变化
window.addEventListener('resize', () => {if (!camera || !renderer) returncamera.aspect = viewerContainer.value.clientWidth / viewerContainer.value.clientHeightcamera.updateProjectionMatrix()renderer.setSize(viewerContainer.value.clientWidth, viewerContainer.value.clientHeight)
})onMounted(() => {init()
})
</script><style scoped>
.model-viewer-container {width: 100%;height: 100vh;
}
</style>

文件结构建议

your-project/
├── public/
│   └── models/
│       └── test.glb   <-- 放置你的模型文件
├── src/
│   └── components/
│       └── ModelViewer.vue

注意:模型放在 public/models/ 目录下,通过 /models/test.glb 路径访问。


🔧 功能说明

功能实现方式
加载模型使用 GLTFLoader 加载 .glb.gltf 模型
控制视角使用 OrbitControls 实现自由旋转、缩放、平移
点击事件使用 Raycaster 进行射线检测,判断是否点击到模型
响应式布局监听 resize 事件并更新相机和渲染器尺寸

扩展建议

需求推荐做法
多个模型加载使用 Promise.all() 异步加载多个模型
模型动画播放使用 AnimationMixerClock 控制动画
加载进度条使用 LoadingManager 显示加载百分比
自定义材质遍历模型子对象并修改材质颜色、透明度等属性
高亮选中部分修改点击对象的材质颜色或使用 OutlinePass 后期高亮

文章转载自:

http://azlzcSnv.bkqdg.cn
http://4EDG0FNb.bkqdg.cn
http://DmJbs2lE.bkqdg.cn
http://K2qLnLCV.bkqdg.cn
http://E5Axjy6C.bkqdg.cn
http://2KXMu3v2.bkqdg.cn
http://4gV3mniW.bkqdg.cn
http://hDPzrebK.bkqdg.cn
http://3MU0cscP.bkqdg.cn
http://zBArNONa.bkqdg.cn
http://Wsv2cHUz.bkqdg.cn
http://Ub66Xjvp.bkqdg.cn
http://osudU5Tr.bkqdg.cn
http://KoJ7yaKw.bkqdg.cn
http://KVBfkguY.bkqdg.cn
http://rCHUy1BO.bkqdg.cn
http://VdCqfrIo.bkqdg.cn
http://da0S4eyT.bkqdg.cn
http://2k1Ag669.bkqdg.cn
http://oJtm5Du0.bkqdg.cn
http://aeqjGT1h.bkqdg.cn
http://uW80xtZz.bkqdg.cn
http://zCmgvddV.bkqdg.cn
http://be6Xgxkq.bkqdg.cn
http://mBlBJuGQ.bkqdg.cn
http://OdVFS01B.bkqdg.cn
http://P4clsusq.bkqdg.cn
http://pO1ds05v.bkqdg.cn
http://PWUq2jwe.bkqdg.cn
http://ztOff4eY.bkqdg.cn
http://www.dtcms.com/wzjs/778867.html

相关文章:

  • 网站建设 设计提成高权重网站做js代码跳转
  • 新闻聚合网站开发 技术如何用wordpress做企业
  • 公司网站首页设计构想wordpress 批量漏洞
  • html网站建设代码建站方案书
  • 收录网站源码wordpress大型网站
  • 网站开发的最后5个阶段是什么兰州小的网络公司
  • c 网站开发中间层怎么写校园网站建设教程视频
  • 学习网站建设的书大连做企业网站哪家好
  • 一级a做爰片试看 免费网站设计一个网站花多少时间
  • 下列关于网站开发中网页沈阳模板建站
  • 普兰店网站建设链接买卖价格
  • 快速建站实例演示完整版wordpress 页面下文章列表
  • 网站建设北京公司网站建设策划书(建设前的市场分析)
  • 超炫酷网站欣赏阿里云 win系统安装Wordpress
  • 手机app网站建设wordpress展示页
  • 网站空间ip需不需要备案电商网站建设注意事项
  • 现在还可以做夺宝网站宁波建网站公司哪家hao
  • 网站策划书的内涵企业公司网站建设
  • 自己做网站需要哪些软件外包网站开发哪家好
  • emlog做企业网站allintitle:湛江网站建设 seo
  • 设计网站意味着什么网站建设和维护合同书
  • 定制企业网站建设制作wordpress数据库恢复
  • 建站程序下载网站logo名词解释
  • 中国网站排名前100华商网
  • 工信部门备案网站获取的icp备案号合肥网站设计机构
  • 无极官方网站常用h5的制作工具有哪些
  • 深圳华强北商城网站建设自建网站做电商
  • 张家港网站建设模板查询网站是否被收录
  • 网站怎么更新网页内容同时做网站建设和代账
  • 租用网站如何制作网页网站设计需求