three.js使用正方体加图片实现全景看房效果

three.js使用正方体加图片实现全景看房效果

实现方法

  1. 创建一个正方体
  2. 加载6张纹理贴图
  3. 正方体z轴缩放-1
  4. 调整相机位置

图例

在这里插入图片描述

代码

<template><div class="app"><div ref="canvesRef" class="canvas-wrap"></div></div>
</template><script setup>
import { ref, onMounted } from "vue";
import * as THREE from "three";
import { OrbitControls } from "three/addons/controls/OrbitControls.js";const canvesRef = ref(null);
const canvasWidth = window.innerWidth;
const canvasHeight = window.innerHeight;
let scene;
let camera;
let renderer;
let axesHelper;
let cameraControls;init();
render();
function init() {// 场景scene = new THREE.Scene();// 模型addModel();// 相机camera = new THREE.PerspectiveCamera(75,canvasWidth / canvasHeight,0.1,3000);camera.position.set(0, 0, -1);// camera.lookAt(0, 0, 0);// 坐标辅助对象axesHelper = new THREE.AxesHelper(200);scene.add(axesHelper);// 渲染器//antialias - 是否执行抗锯齿。默认为false.renderer = new THREE.WebGLRenderer();renderer.setSize(canvasWidth, canvasHeight);// 相机轨道控制器cameraControls = new OrbitControls(camera, renderer.domElement);cameraControls.minDistance = 2;cameraControls.maxDistance = 10;// cameraControls.addEventListener("change", render);// cameraControls.target.set(0, 0, 0);// cameraControls.update();
}
function addModel() {// 几何体const geometry = new THREE.BoxGeometry(100, 100, 100);// 材质const imgs = ["4_l", "4_r", "4_u", "4_d", "4_b", "4_f"];const textureLoader = new THREE.TextureLoader();const materialArr = imgs.map((item) => {const texture = textureLoader.load(`../src/assets/img/room/${item}.jpg`);if (item === "4_u" || item === "4_d") {texture.rotation = Math.PI;texture.center = new THREE.Vector2(0.5, 0.5);}return new THREE.MeshBasicMaterial({ map: texture });});// 模型const cube = new THREE.Mesh(geometry, materialArr);cube.geometry.scale(1, 1, -1);scene.add(cube);
}
function render() {renderer.render(scene, camera);requestAnimationFrame(render);
}
onMounted(() => {canvesRef.value.appendChild(renderer.domElement);
});
</script><style lang="scss" scoped>
.app {position: relative;
}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/319393.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智能分析网关V4如何在播放时设置是否显示算法区域?具体操作是什么?

AI智能分析网关V4是TSINGSEE青犀视频旗下的一款高效的边缘计算分析网关&#xff0c;可实现人体行为检测、车辆事件检测、环境卫生检测与消防事件检测等&#xff0c;广泛应用在工地、工厂、园区、楼宇、校园、仓储等场景中。将智能分析网关V4结合我们的视频融合平台EasyCVR一起使…

使用FFmpeg4.3.1的SDK官方开发包编译ffmpeg.c

文章目录 前言一、前期准备1、所需文件2、编译环境 二、创建工程三、解决编译报错四、测试 ffmpeg.c 前言 本文使用官方发布的 SDK 开发包来亲手编译 ffmpeg.c 文件&#xff0c;编译成功后可以对其内部的源码按照我们的需求进行修改&#xff0c;为后面的转码器的开发做个铺垫。…

ARM Cortex-A学习(3):MMU内存管理单元

内存管理单元(MMU)负责虚拟地址到物理地址的转换。MMU通过翻译表将程序使用的虚拟地址映射到实际的物理内存位置&#xff0c;实现对内存的动态管理和隔离。这不仅允许更灵活的内存分配&#xff0c;还提高了系统的安全性和稳定性。了解MMU的工作原理对于开发底层代码、BootLoade…

工业协议转换网关:打破通信壁垒,实现设备互联

在工业自动化领域&#xff0c;各种设备和系统间的通信协议不尽相同&#xff0c;这给不同设备间的集成和数据交互带来了挑战。工业协议转换网关作为一种解决这一问题的关键设备&#xff0c;能够实现不同协议间的转换和数据传输&#xff0c;打破通信壁垒&#xff0c;提高设备的协…

HarmonyOS4 vp单位计算

我们在harmonyOS中设置宽度等单位时 需要在后面写明具体是什么单位 width("100%")这里 我们就写明了是 百分之百 如果不写 直接给数值 width(100)那么 它就会按vp去读 这里就被读为 100vp vp 之前是一种移动端宽度概念 后面鸿蒙重定义了它的概念 计算公式是 px 乘…

macbook录屏快捷键大全,教你快速录制视频

“有人知道macbook电脑有录屏快捷键吗&#xff0c;现在录屏的速度太慢了&#xff0c;每次打开都要浪费不少时间&#xff0c;要是有录屏快捷键&#xff0c;应该会快很多&#xff0c;有哪位大佬知道吗&#xff1f;教教我&#xff01;” 无论是在工作还是生活中&#xff0c;电脑已…

el-select下拉框 change事件返回该项所有数据

主要代码 value-key <template><div><el-selectv-model"value"value-key"label"placeholder"请选择"change"selectChange"><el-optionv-for"item in options":key"item.label":label"…

Python爬虫篇(四):京东数据批量采集

京东数据批量采集 ●前言 一年一度的端午节又到了&#xff0c;甜咸粽子之争也拉开了帷幕&#xff0c;它价格高昂&#xff0c;它味道鲜美&#xff0c;然而&#xff0c;默默无名的它却备受广大民众喜爱&#xff01;好家伙&#xff0c;一看就是老qq看点了 &#xff0c;那咱们能做…

电锯切割狂

欢迎来到程序小院 电锯切割狂 玩法&#xff1a;把木块切成等分的碎片&#xff0c;每关都会有切割次数&#xff0c;木块数&#xff0c;切割越均匀分数越搞&#xff0c; 有简单、正常、困难、专家版&#xff0c;快去解锁不同版本进行切割吧^^。开始游戏https://www.ormcc.com/pl…

2023到2024年:前端发展趋势展望

本文探讨了2023年至2024年之间前端领域的发展趋势。我们将关注以下几个方面的变化&#xff1a;无代码/低代码开发的兴起、WebAssembly的广泛应用、跨平台技术的发展、人工智能在前端的应用以及用户体验的不断优化。 随着技术的飞速发展&#xff0c;前端开发在推动互联网与移动应…

numpy数组05-numpy的索引和切片

numpy中可以对其中的某一行&#xff08;列&#xff09;进行数据处理。 上节课我们已经取出了CSV文件中的二维数组&#xff0c;本次对这个二维数组为例&#xff0c;进行练习操作。 示例代码如下&#xff1a; import numpy as npus_file_path "US_video_data_numbers.cs…

【响应式编程-02】Lambda的语法格式和使用

一、简要描述 Lambda的语法格式Lambda的使用 二、Lambda的语法格式 (parameters) -> {statements;}(pararmeters) -> expression 1、(parameters) -> {statements;} parameters: 函数的参数列表statements: 执行语句-> : 使用指定参数去完成某个功能 public int me…