html 全景图three,vue中利用three.js实现全景图的完整示例

本文详细介绍了如何在Vue项目中结合Three.js库创建并实现全景图的显示和交互功能。从安装Three.js到初始化场景、相机、渲染器,再到添加鼠标事件处理全景图旋转和缩放,步骤清晰,代码直接。最后,还提供了窗口大小变化时的适配方法,确保全景图在不同设备上都能良好展示。
摘要由CSDN通过智能技术生成

粗暴一点,直接上代码:

第一步:

通过指令下载three.js

npm install three -S

第二步:

在组件中引用

import * as THREE from 'three'

第三步:

html部分

js部分

import * as THREE from 'three';

var camera;

var renderer;

var scene;

export default {

name: 'panorama',

data() {

return {

bigImg: require("../../../../../images/项目案例/001.jpg"),//全景图图片路径

}

},

mounted() {

// 调用全景图函数

this.$nextTick(() => {

this.init();

this.animate();

})

},

methods: {

// 全景图配置函数---------------

init() {

var container = document.getElementById('container');

// 创建渲染器

renderer = new THREE.WebGLRenderer();

renderer.setPixelRatio(window.devicePixelRatio);

// 设置画布的宽高

renderer.setSize(window.innerWidth, window.innerHeight);

// 判断容器中子元素的长度

let childs = container.childNodes;

if (container.childNodes.length > 0) {

container.removeChild(childs[0]);

container.appendChild(renderer.domElement);

} else {

container.appendChild(renderer.domElement);

}

// container.appendChild(renderer.domElement);

// 创建场景

scene = new THREE.Scene();

// 创建相机

camera = new THREE.PerspectiveCamera(90, window.innerWidth / window.innerHeight, 0.1, 100);

camera.position.set(0, 0, 0);

var material = new THREE.MeshBasicMaterial();//材质

var texture = new THREE.TextureLoader().load(this.bigImg);

material.map = texture;

var skyBox = new THREE.Mesh(

new THREE.SphereBufferGeometry(100, 100, 100),

material

);

skyBox.geometry.scale(1, 1, -1);

scene.add(skyBox);

window.addEventListener('resize', this.onWindowResize, false);

var bMouseDown = false;

var x = -1;

var y = -1;

// 添加鼠标事件

container.onmousedown = function (event) {

event.preventDefault();//取消默认事件

x = event.clientX;

y = event.clientY;

bMouseDown = true;

}

container.onmouseup = function (event) {

event.preventDefault();

bMouseDown = false;

}

container.onmousemove = function (event) {

event.preventDefault();

if (bMouseDown) {

skyBox.rotation.y += -0.005 * (event.clientX - x);

skyBox.rotation.x += -0.005 * (event.clientY - y);

if (skyBox.rotation.x > Math.PI / 2) {

skyBox.rotation.x = Math.PI / 2

}

if (skyBox.rotation.x < -Math.PI / 2) {

skyBox.rotation.x = -Math.PI / 2

}

x = event.clientX;

y = event.clientY;

}

}

container.onmousewheel = function (event) {

event.preventDefault();

if (event.wheelDelta != 0) {

camera.fov += event.wheelDelta > 0 ? 1 : -1;

if (camera.fov > 150) {

camera.fov = 150;

}

else if (camera.fov < 30) {

camera.fov = 30;

}

camera.updateProjectionMatrix();

}

}

},

onWindowResize() {

// 窗口缩放的时候,保证场景也跟着一起缩放

camera.aspect = window.innerWidth / window.innerHeight;

camera.updateProjectionMatrix();

renderer.setSize(window.innerWidth, window.innerHeight);

},

animate() {

requestAnimationFrame(this.animate);

renderer.render(scene, camera);

}

},

}

到此这篇关于vue中利用three.js实现全景图的文章就介绍到这了,更多相关vue用three.js实现全景图内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持! ad51e517755f8fd6a7ec83ced4ecfaf3.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue使用Three.js VR全景图,你可以按照以下步骤进行: 1. 首先,确保你已经安装了VueThree.js的依赖包。你可以使用npm或yarn来安装它们。 2. 在Vue的组件,导入Three.js所需的库和组件: ```javascript import * as THREE from 'three'; import { VRButton } from 'three/examples/jsm/webxr/VRButton.js'; ``` 3. 创建一个Vue组件,并在其定义一个方法来初始化Three.js场景: ```javascript export default { mounted() { this.initScene(); }, methods: { initScene() { // 创建场景 const scene = new THREE.Scene(); // 创建相机 const camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 ); // 创建渲染器 const renderer = new THREE.WebGLRenderer({ antialias: true }); renderer.setSize(window.innerWidth, window.innerHeight); document.body.appendChild(renderer.domElement); // 添加VR按钮 document.body.appendChild(VRButton.createButton(renderer)); // 创建全景图 const textureLoader = new THREE.TextureLoader(); const texture = textureLoader.load('path/to/your/panorama-image.jpg'); const sphereGeometry = new THREE.SphereGeometry(500, 60, 40); const sphereMaterial = new THREE.MeshBasicMaterial({ map: texture }); const sphere = new THREE.Mesh(sphereGeometry, sphereMaterial); sphere.position.set(0, 0, 0); scene.add(sphere); // 更新相机和场景 const animate = () => { requestAnimationFrame(animate); sphere.rotation.y += 0.01; renderer.render(scene, camera); }; animate(); }, }, }; ``` 4. 在Vue模板使用这个组件: ```html <template> <div id="app"> <canvas id="vr-canvas"></canvas> </div> </template> ``` 这样,你就可以在Vue使用Three.js VR全景图了。当用户点击VR按钮时,全屏显示全景图,并支持通过移动设备或VR眼镜进行交互。你可以适配不同的全景图、修改相机参数等来满足你的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值