上传视频麻烦,所以直接上代码。自己看官网案例写的

<template><div><div id="container"></div></div>
</template><script>import * as Three from '../../node_modules/three/build/three.module.js';//import * as Three from 'three'import {OrbitControls} from 'three/examples/jsm/controls/OrbitControls'import { PointerLockControls } from 'three/examples/jsm/controls/PointerLockControls.js';export default {name: 'ThreeTest',data() {return {camera: null,scene: null,renderer: null,mesh: null,controls:null,intersections:null,objects : [],clock:"",}},methods: {init: function() {this.initScene()//场景对象this.initCamera()//相机this.initWebGLRenderer()//渲染器this.initAxisHelper()//辅助坐标this.render()this.createControls()//控件对象this.Box()this.initControls()},//鼠标控制移动相机视角*****下面initControls复制代码就可以实现控制相机initControls(){let controls = new PointerLockControls( this.camera, document.body );var container = document.getElementById( 'container' );container.addEventListener( 'click', function () {controls.lock();});this.scene.add(controls.getObject() );},创建场景对象SceneinitScene(){this.scene = new Three.Scene();},相机initCamera(){let container = document.getElementById('container');this.camera = new Three.PerspectiveCamera(60, container.clientWidth/container.clientHeight, 1, 1000);this.camera.position.set(292, 109, 268);//设置相机位置this.camera.lookAt(this.scene.position); //设置相机方向(指向的场景对象)},Box(){//正方形let geometry = new Three.BoxGeometry(50, 50, 50);let material = new Three.MeshNormalMaterial();this.mesh = new Three.Mesh(geometry, material);this.scene.add(this.mesh);},//地板plane(){var planeGeometry = new Three.PlaneGeometry(600, 600);//平面使用颜色为0xcccccc的基本材质var planeMaterial = new Three.MeshBasicMaterial({color: 0xcccccc});var plane = new Three.Mesh(planeGeometry, planeMaterial);//设置屏幕的位置和旋转角度plane.rotation.x = -0.5 * Math.PI;plane.position.x = 0;plane.position.y = 0;plane.position.z = 0;//将平面添加场景中this.scene.add(plane);},//创建渲染器对象initWebGLRenderer(){this.renderer = new Three.WebGLRenderer({antialias: true});this.renderer.setSize(container.clientWidth, container.clientHeight);//设置渲染区域尺寸this.renderer.setClearColor(0xb9d3ff, 1); //设置背景颜色container.appendChild(this.renderer.domElement);//body元素中插入canvas对象},//辅助三维坐标系AxisHelperinitAxisHelper(){this.axisHelper = new Three.AxisHelper(250);this.scene.add(this.axisHelper);},render:function(){//this.mesh.rotation.x+=0.01requestAnimationFrame(this.render); //请求再次执行渲染函数renderthis.renderer.render(this.scene,this.camera);//执行渲染操作},// 创建控件对象createControls () {//this.controls = new OrbitControls(this.camera,this.renderer.domElement)}},mounted() {this.init();this.render();}}
</script>
<style scoped>#container {height: 400px;}
</style>

Three.js使用PointerLockControls控制相机实现第一人称视角相关推荐

  1. 【游戏开发实战】Unity手游第一人称视角,双摇杆控制,FPS射击游戏Demo(教程 | 含Demo工程源码)

    文章目录 一.前言 二.实现方案 1.无主之地,第一人称视角 2.我之前做的摇杆控制 3.第一人称视角 + 摇杆控制 三.开始实战 1.资源获取:Unity AssetStore 2.Low Poly ...

  2. three.js添加人物实现第一人称视角控制,类似于cf或绝地求生游戏控制人物

    three.js实现第一人称视角控制 思路 具体代码如下 最终效果 思路 查看官方例子,使用PointerLockControls可以实现该功能,官方参考地址. 然后可以将模型加载进来同步修改位置和观 ...

  3. Three.js漫游相机控制器/three.js第三人称视角漫游/three.js第一人称视角漫游

    Three.js三维可视化引擎没有实现第三人称漫游控制器,第一人称实现的也很一般,大部分满足不了需求,需要自己手动去写一个.以下是模仿其它平台写的第三人称视角漫游,也可以简便的改写成第一人称. 下面是 ...

  4. ThreeJS第一人称视角处理

    简介 第一人称控件指针锁定API允许您在游戏界面中锁定鼠标或其他指针设备,以便您不用绝对定位光标就可以获得坐标变化值,从而准确地判断用户正在做什么,并且还可以防止用户意外地进入另一块屏幕或别的什么地方 ...

  5. arduino 操纵杆_用Arduino做一台FPV(第一人称视角)遥控履带车

    这次和大家分享的这个项目结合了3D打印,Arduino和FPV(第一人称视角)相机的相关知识. 非常适合有兴趣制造自己的RC履带车,或者只是想使用3D打印,Arduino和FPV进行创造的伙伴们. 步 ...

  6. 【Unity】第一人称视角开发

    需求 我的需求是在Unity构建一个第一人称视角,实现移动跳跃功能. 主要参考的是这篇博文提供的方案,不过该方案为了只允许一次跳跃,单独在人物底部构建了一个空对象,我无需此限制,因此对其进行了简化. ...

  7. Cesium 视角跟随-第一人称视角漫游

    Cesium 视角跟随-第一人称视角漫游 实现思路 核心代码 完整代码 在线示例 2023年4月19日更新-搞了一个 Cesium 镜像,欢迎使用:沙盒示例 和 API 作为三维项目,以第一人称视角漫 ...

  8. 使用Open3d在点云中实现第一人称视角导航

    Open3D是一个开源库,支持快速开发处理3D数据的软件.Open3D前端在C++和Python中公开了一组精心挑选的数据结构和算法.后端经过高度优化,并设置为并行化. 本人最近在工作上需要实现一个需 ...

  9. 7999元大疆最新无人机,支持第一人称视角极速拍摄,直接起飞

    穿越山口.过火圈,体验2秒加速到100公里的急速飞行: 可以从第一视角体验拍摄效果,"就像是开启了第三只眼": 而且,只需要靠手部动作"单手操作",就能操控: ...

最新文章

  1. UIActivityViewController使用
  2. Android studio 使用心得(三)—从Eclipse迁移到Android studio
  3. Kernel Driver DmaEgine 子系统 (一)
  4. 电力系统继电保护第二版张保会_《继电保护》复习笔记
  5. 51单片机的轮胎气压监测系统_SHT11传感器的温度、湿度采集系统,51单片机,Proteus仿真,C代码等...
  6. dos导入mysql数据库表_用DOS命令在Linux下mysql数据库的导入导出操作
  7. QAdmin轻量级后台HTML模板 1.5
  8. @RequestBody配合@JsonFormat注解实现字符串自动转换成Date
  9. 多项式乘积求导 c语言,c语言实现多项式求导.docx
  10. redis高级进阶(2)
  11. vue.js 学习笔记3——TypeScript
  12. SPSS制作三线表【SPSS 013期】
  13. uni-app打开淘宝、京东,并跳转到对应的商品链接
  14. 学习新方法:帅到没朋友
  15. [USACO Hol10] 政党
  16. 找工作与找对象的关系
  17. 十个高质量自学网站,让你的技术突飞猛进
  18. IT桔子IT互联网公司产品数据库及商业信息服务
  19. 微软计算机学院,微软亚洲研究院谢幸博士,秦涛博士访问计算机学院并做学术报告...
  20. JavaScript 注释

热门文章

  1. 电脑开机出现英文“ERROR:System fan has failed”的错误提示
  2. nginx请求如何映射url
  3. Wget漏洞(CVE-2016-4971)利用方式解析
  4. Zabbix server is not running:the information displayed may not be current
  5. WinMerge只显示差异部分的设置方法
  6. 引用css样式时,一个class引用两个样式的写法( class=ico001 icoCom)。
  7. 剑指 Offer II 024. 反转链表
  8. C语言异常处理机制——为您的C程序添加异常处理
  9. android开发中的ANR异常
  10. display:inline-block间隙产生的原因以及解决方案