使用three.js搞一个简单全景图查看功能,类似VR看图(一些功能上来自https://juejin.cn/post/7037342016266567711)
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 | //代码<br> //模板 <template> <div class = "main" > <div class = "view-container" ref= "threeDBox" ></div> </div> </template> <script setup> import { onMounted, ref } from 'vue' ; import * as THREE from "three" ; import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js' ; let threeDBox = ref() onMounted(async () => { let picList = [ "right" , "left" , "up" , "down" , "front" , "back" ]; var scene = new THREE.Scene(); var material2 = [] for ( let i=0;i<picList.length;i++){ material2.push(`${picList[i]}.png`) } scene.background= new THREE.CubeTextureLoader().load(material2); /** * 相机设置 */ var width = window.innerWidth; //窗口宽度 var height = window.innerHeight; //窗口高度 var camera = new THREE.PerspectiveCamera(72, width / height, 100, 1000); //相机类型需要时这种 camera.position.set(0, 0, 500); //设置相机位置 camera.lookAt(scene.position); //设置相机方向(指向的场景对象) //渲染器 var renderer = new THREE.WebGLRenderer(); renderer.setSize(width, height); //设置渲染区域尺寸 renderer.setClearColor(0xb9d3ff, 1); //设置背景颜色 //控制器 var controls = new OrbitControls(camera,renderer.domElement); //创建控件对象 controls.addEventListener( 'change' , function (){ renderer.render(scene,camera) requestAnimationFrame() }); threeDBox.value.appendChild(renderer.domElement); //body元素中插入canvas对象 setTimeout(() => { renderer.render(scene,camera) }, 100); }) </script> |
1 | 效果如下<br><br>图片来自这个网站 <a href= "https://vr.quanjing.com/image/qp63250896" rel= "noopener nofollow" >全景图VR素材_全景图全景VR素材_全景360VR素材 (quanjing.com)</a><br><br> |
如有图片侵权请联系删除,,,,,,,qq1982547716
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现