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

广西建设网站网址多少钱南京江北新区地图

广西建设网站网址多少钱,南京江北新区地图,discuz注册,wordpress部署文件Vue2 Three.js 创建可交互的360度全景视图#xff0c;可控制旋转、缩放 引言 在现代网页开发中#xff0c;三维图形技术已经成为提升用户体验的重要工具。本文将展示如何使用 Three.js 创建一个简单的可交互360度全景视图。通过这一项目#xff0c;你将能够学习到基本的场…Vue2 Three.js 创建可交互的360度全景视图可控制旋转、缩放 引言 在现代网页开发中三维图形技术已经成为提升用户体验的重要工具。本文将展示如何使用 Three.js 创建一个简单的可交互360度全景视图。通过这一项目你将能够学习到基本的场景设置、相机控制以及用户交互的实现方式。 效果展示 环境准备 首先你需要在项目中引入 Three.js。可以通过 npm 安装 npm install three确保你的项目结构中有一个名为 images 的文件夹并放入一张全景图像如 001.jpg以便后续使用。 代码示例 下面是实现可交互360度全景视图的 Vue.js 组件代码 templatediv classc-width c-height idcontainerVr/div /templatescript import * as THREE from three; import PANO0001 from ./images/001.jpg;export default {name: containerVr,data() {return {scene: null,camera: null,renderer: null,};},mounted() {this.init();},methods: {init(img) {img img ? img : PANO0001;const containerVr document.getElementById(containerVr);containerVr.innerHTML ;// 初始化用户交互变量let isUserInteracting false,onPointerDownMouseX 0, onPointerDownMouseY 0,lon 0, onPointerDownLon 0,lat 0, onPointerDownLat 0,phi 0, theta 0;// 创建相机对象const camera new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 1, 1100);// 创建场景对象const scene new THREE.Scene();// 创建球体几何体表示全景图的表面const geometry new THREE.SphereGeometry(500, 60, 40);geometry.scale(-1, 1, 1);// 加载并设置全景图纹理const texture new THREE.TextureLoader().load(img);texture.colorSpace THREE.SRGBColorSpace;const material new THREE.MeshBasicMaterial({ map: texture });// 创建网格对象将几何体和材质结合const mesh new THREE.Mesh(geometry, material);scene.add(mesh);// 创建渲染器并设置参数const renderer new THREE.WebGLRenderer();renderer.setSize(window.innerWidth, window.innerHeight);renderer.setPixelRatio(window.devicePixelRatio);// 将渲染器的DOM元素添加到容器中containerVr.appendChild(renderer.domElement);containerVr.style.touchAction none;// 添加事件监听器以处理用户交互containerVr.addEventListener(pointerdown, onPointerDown);document.addEventListener(wheel, onDocumentMouseWheel);// 窗口大小调整事件window.addEventListener(resize, onWindowResize);function onWindowResize() {camera.aspect window.innerWidth / window.innerHeight;camera.updateProjectionMatrix();renderer.setSize(window.innerWidth, window.innerHeight);}// Pointer Down事件处理function onPointerDown(event) {if (event.isPrimary false) return;isUserInteracting true;onPointerDownMouseX event.clientX;onPointerDownMouseY event.clientY;onPointerDownLon lon;onPointerDownLat lat;document.addEventListener(pointermove, onPointerMove);document.addEventListener(pointerup, onPointerUp);}// Pointer Move事件处理function onPointerMove(event) {if (event.isPrimary false) return;lon (onPointerDownMouseX - event.clientX) * 0.1 onPointerDownLon; lat (event.clientY - onPointerDownMouseY) * 0.1 onPointerDownLat;}// Pointer Up事件处理function onPointerUp() {if (event.isPrimary false) return;isUserInteracting false;document.removeEventListener(pointermove, onPointerMove);document.removeEventListener(pointerup, onPointerUp);}// 滚轮事件处理function onDocumentMouseWheel(event) {if (event.toElement.getAttribute(data-engine) event.toElement.getAttribute(data-engine).indexOf(three.js) -1) {const fov camera.fov event.deltaY * 0.05; camera.fov THREE.MathUtils.clamp(fov, 10, 75); camera.updateProjectionMatrix(); }}// 动画循环function animate() {requestAnimationFrame(animate);update();}// 更新函数处理相机位置和渲染function update() {if (isUserInteracting false) {lon 0.02; }lat Math.max(-85, Math.min(85, lat));phi THREE.MathUtils.degToRad(90 - lat);theta THREE.MathUtils.degToRad(lon);const x 500 * Math.sin(phi) * Math.cos(theta);const y 500 * Math.cos(phi);const z 500 * Math.sin(phi) * Math.sin(theta);camera.lookAt(x, y, z); renderer.render(scene, camera); }animate(); },// 设置图像的方法setImg(url) {let loader new THREE.TextureLoader(); let texture loader.load(url); let material new THREE.MeshBasicMaterial({map: texture, side: THREE.DoubleSide });return material; },} } /scriptstyle scoped #containerVr {width: 100% !important; flex: 1 !important; } #containerVr canvas {max-width: 100%; max-height: 100%; } /style代码解析 组件结构该组件使用 Vue.js 的 template、script 和 style 标签组织代码。初始化方法在 mounted 钩子中调用 init 方法初始化 Three.js 的场景、相机和渲染器。用户交互实现了鼠标按下、移动和滚动事件用户可以通过拖动鼠标来旋转视图。自适应窗口通过监听窗口大小变化事件动态更新相机和渲染器的尺寸。 总结 通过本文你可以学习如何使用 Three.js 创建一个基础的360度全景视图。这种技术可以广泛应用于虚拟现实、在线展示以及游戏开发等多个领域。希望这篇文章对你理解 Three.js 和创建互动场景有所帮助。 进一步学习 Three.js 官方文档Three.js 示例Vue.js 官方文档 通过这种方式读者不仅可以理解代码的具体实现还能了解到如何在实际项目中应用这些技术。希望这个结构能帮助你更好地撰写博客如果你有其他想法或需要进一步的帮助请告诉我。
http://www.w-s-a.com/news/482293/

相关文章:

  • 网站建设及优化 赣icp外包服务美剧
  • wordpress添加菜单深圳优化网站排名
  • 免费下载建设银行官方网站重点专业建设验收网站
  • 建行官方网站登录怎样制作悬浮的WordPress
  • 建设一个网站需要几个角色广告设计与制作就业前景
  • 侵入别人的网站怎么做怎么修改网站排版
  • 网站如何提交百度收录什么最便宜网站建设
  • 商丘网站建设想象力网络做公司网站需要准备什么
  • 滁州新手跨境电商建站哪家好网站推广运作怎么做
  • 烟台有没有做网站大连建设工程信息网专家库
  • 网站建设明确细节商贸有限公司的经营范围
  • 南宁微网站开发做的好的有哪些网站
  • 好的素材下载网站读书网网站建设策划书
  • 东莞南城网站建设wordpress用户投稿插件
  • 开个网站做代理赚钱吗沽源网站建设
  • 做卖车网站需要什么手续wordpress 主题 demo
  • 上海外贸网站开发公司建设内容
  • 网站制作品牌公司网站的字体颜色
  • 外贸wordpress模板常德seo快速排名
  • 网站后台认证码专门做网页的网站
  • 宁波企业品牌网站建设物流公司招聘
  • 北京机建网站做网站用angular
  • 攀枝花市网站建设outlook企业邮箱注册申请
  • 企业网站建设报价单免费劳务网站建设
  • 天津平台网站建设方案国际新闻最新消息今天乌克兰与俄罗斯
  • 食用油 网站 模板网页游戏网站在线玩
  • 做网站用的书新能源东莞网站建设技术支持
  • 漯河网站超市建设软件开发的五个阶段
  • 制作深圳网站建设阿里OSS做网站图库费用
  • 网页设计与网站建设 入门必练宜都网站seo