three.js实现3D室内全景看房

这篇具有很好参考价值的文章主要介绍了three.js实现3D室内全景看房。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

首先我们先搭建一个项目,我选择使用vite来进行项目的搭建,执行命令如下:

yarn create vite 项目名称

这样一个基本的项目就搭建成功了,目录如下所示

three.js实现3D室内全景看房,前端,vue.js,typescript,前端

然后,下载一下three.js工具,执行如下命令

npm i three

页面中引入

import * as THREE from "three";

先搭建一个立体图形,并画出辅助线,如下所示

three.js实现3D室内全景看房,前端,vue.js,typescript,前端

 实现代码如下:

import * as THREE from "three";
import { useEffect} from "react";
import { OrbitControls } from "three/examples/jsm/controls/OrbitControls";


function App() {


  useEffect(() => {
    const camera = new THREE.PerspectiveCamera(
      70,
      window.innerWidth / window.innerHeight,
      0.01,
      10
    );
    camera.position.z = 1;

    const scene = new THREE.Scene();


    const geometry = new THREE.BoxGeometry(0.4,0.4,0.4);
    const material = new THREE.MeshNormalMaterial();

    const mesh = new THREE.Mesh( geometry, material );

    // 辅助轴画线
    const ax = new THREE.AxesHelper();
    scene.add(ax);

    const renderer = new THREE.WebGLRenderer({ antialias: true });
    renderer.setSize(window.innerWidth, window.innerHeight);
    renderer.setAnimationLoop(animation);
    document.body.appendChild(renderer.domElement);

    // animation

    function animation(time) {
      // 可以进行旋转
      // mesh.rotation.x = time / 2000;
      // mesh.rotation.y = time / 1000;

      renderer.render(scene, camera);
    }

    new OrbitControls(camera, renderer.domElement);

  }, []);

  return <div className="App"></div>;
}

export default App;

接着,给我们的立体图形中添加照片,实现如下效果

three.js实现3D室内全景看房,前端,vue.js,typescript,前端

这是从上面看的俯视图,它可以进行一个旋转

实现代码如下:

import * as THREE from "three";
import { useEffect } from "react";
import { OrbitControls } from "three/examples/jsm/controls/OrbitControls";
import back from '../src/img/back.png'
import bottom from '../src/img/bottom.png'
import front from '../src/img/front.png'
import left from '../src/img/left.png'
import right from '../src/img/right.png'
import top from '../src/img/top.png'

function App() {


  const loadTextrue=(url)=>{
    const loader = new THREE.TextureLoader()
    const texture=loader.load(url)
    const material = new THREE.MeshBasicMaterial( {
       map: texture,
       side:THREE.DoubleSide,
      } );
    return material
  }

  useEffect(() => {
    const camera = new THREE.PerspectiveCamera(
      70,
      window.innerWidth / window.innerHeight,
      0.01,
      10
    );
    camera.position.z = 1;

    const scene = new THREE.Scene();


    const arr=[
      loadTextrue(back),
      loadTextrue(front),
      loadTextrue(top),
      loadTextrue(bottom),
      loadTextrue(left),
      loadTextrue(right),
    ]
    const geometry = new THREE.BoxGeometry(4,4,4);


    const mesh = new THREE.Mesh(geometry,arr);
    scene.add(mesh);

    // 辅助轴画线
    // const ax = new THREE.AxesHelper();
    // scene.add(ax);

    const renderer = new THREE.WebGLRenderer({ antialias: true });
    renderer.setSize(window.innerWidth, window.innerHeight);
    renderer.setAnimationLoop(animation);
    document.body.appendChild(renderer.domElement);

    // animation

    function animation(time) {
      // 可以进行旋转
      // mesh.rotation.x = time / 2000;
      // mesh.rotation.y = time / 1000;

      renderer.render(scene, camera);
    }

    new OrbitControls(camera, renderer.domElement);

  }, []);

  return <div className="App"></div>;
}

export default App;

需要注意的是:图片一定要按照顺序来,六方体顺序如下:前后,上下,左右

图片需要在项目中下载,如果有需要的朋友可以私聊发代码

由于最近私信的小伙伴比较多,再加上最近比较忙,所以就把项目上传到了百度网盘,有需要的可以下载解压后查看代码

链接:https://pan.baidu.com/s/1-ykuudmi_kyW-xPYK8iCiw?pwd=flzx 
提取码:flzx文章来源地址https://www.toymoban.com/news/detail-527314.html

到了这里,关于three.js实现3D室内全景看房的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • three.js实现vr全景图(vue)

    方法: 可以利用Threejs中的立方体或者球体实现全景图功能,把立方体或球体当成天空盒子,将无缝衔接的图片贴上,看起来就像在一个场景中,相机一般放置在中央。 three.js中文网 1、立方体实现 立方体6个面要贴上6个方向的图片,这6个图片如下所示: 实现代码如下: 图片

    2024年02月12日
    浏览(29)
  • three.js实现VR看房自由

           在很多看房软件,例如贝壳看房、VR博物馆或者VR展厅等等,为了更加真实的展示产品或者场景的特色,通常会通过一些VR或者全景图的方式,给用户带来沉浸式的体验,给视觉上带来比较震撼的效果,再加上一些动感的音乐,仿佛让人深陷其中,无法自拔。假的,因

    2024年01月18日
    浏览(26)
  • three.js入门篇8 之 实现VR看房

    vue create vr360-vue3 yarn add three code 效果 code 效果

    2024年02月06日
    浏览(25)
  • Three.js 实战【1】—— 3D全景视图开发

    在现代开发过程当中,3D开发是越来越不可或缺的一部门,在前面的文章当中简单的说明了一些threeJs的基础,从这里开始,我们将对ThreeJs整体进行一定的应用。 我们先看一下这篇文章主要要实现的一个demo效果,现如今在第三方租房、买房App、或者百度、高德地图上会出现这

    2024年02月12日
    浏览(36)
  • web 3d场景构建+three.js+室内围墙,仓库,楼梯,货架模型等,第一人称进入场景案例

      翻到了之前的一个案例,基于three.js做的仓库布局模拟,地图元素除了大模型外,其他都是通过JSON数据解析动态生成的,例如墙体,柱子门口,地标等,集成了第一人称的插件可以第一人称进入场景有需要的可以下载看看,对想入门的朋友应该有一些参考价值。 /**    *创

    2024年02月10日
    浏览(41)
  • vue3结合three.js实现3D带有交互的动画

    three.js引入 安装轨道控件插件: 安装渲染器插件: vue文件中引用: 在页面中创建场景 创建一个透视相机 初始化渲染器 初始动画混合器 参数:rootObject 混合器播放的动画所属的对象。就是包含动画模型的场景对象。 常用参数和属性: .time 全局的混合器时间。 .clipAction(Ani

    2024年02月04日
    浏览(40)
  • three.js实现vr全景图

    方法: 可以利用Threejs中的立方体或者球体实现全景图功能,把立方体或球体当成天空盒子,将无缝衔接的图片贴上,看起来就像在一个场景中,相机一般放置在中央。 three.js中文网 1、立方体实现 立方体6个面要贴上6个方向的图片,这6个图片如下所示: 实现代码如下: 图片

    2024年02月14日
    浏览(55)
  • vue2+three.js+blender(实现3d 模型引入并可点击效果)

    2023.9.13今天我学习了如何把3d建模里面的模型引入到vue中,并可以实现拖动,点击的效果: 首先安装: npm install three 相关代码如下:  如果没有图片可以去 Three.js--》建模软件如何加载外部3D模型?_threejs加载3d模型_亦世凡华、的博客-CSDN博客

    2024年02月03日
    浏览(36)
  • AR室内导航-Three.js

    如有不明白的可以加QQ:2354528292;wx: aichitudousien 更多教学视频请访问:https://space.bilibili.com/236087412 源码获取:https://item.taobao.com/item.htm?spm=a21dvs.23580594.0.0.3c3a645ebB8H6oft=tid=714574529746 这一次的AR室内导航是使用蜂鸟云地图加上three.js做的,具备室内楼层切换,2D/3D模型切换,指北

    2023年04月08日
    浏览(24)
  • 【案例】3D地球(vue+three.js)

    需要下载插件 有人找不到合适的地球平面图的话,可直接地球平面图

    2024年02月06日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包