如何在Three.js中添加PointerLockControl?

2024-01-11

如何在Three.js中正确添加PointerLockControl?我尝试使用示例,但没有运气,总是出现某种错误。我像这样通过头部导入库<script src="lib/controls/PointerLockControls.js"></script>

如果我这样做

function createControls(){
controls = new THREE.PointerLockControls( camera, document.body );}

我在 PointerLockControls.jf 文件中遇到错误

ReferenceError: Vector3 is not defined

错误所在的那一行看起来像这样

    var vec = new Vector3();

从哪里开始以及如何将其整齐地放入代码中? 我正在使用这个example https://github.com/mrdoob/three.js/blob/master/examples/misc_controls_pointerlock.html。非常感谢您的帮助。有我的代码

/*
My WebGL App
*/
let mainContainer = null;
let fpsContainer
let stats = null;
let camera = null;
let renderer = null;
let scene = null;
// Global variables

function init(){
    if ( THREE.WEBGL.isWebGLAvailable() === false ) container.appendChild( WEBGL.getWebGLErrorMessage() );
    fpsContainer = document.querySelector( '#fps' );
    mainContainer = document.querySelector( '#webgl-secne' );
    scene = new THREE.Scene();
    scene.background = new THREE.Color( 0xEEEEEE ); // http://www.colorpicker.com/
    scene.fog = new THREE.Fog( 0xffffff, 0, 750 );



    createStats();
    createCamera();
    createControls();
    createLights();
    createMeshes();
    createRenderer();
    renderer.setAnimationLoop( () => {
    update();
    render();
  } );
}

// Animations
function update(){

}

// Statically rendered content
function render(){
    stats.begin();
    renderer.render( scene, camera );
    stats.end();
}

// FPS counter
function createStats(){
    stats = new Stats();
    stats.showPanel( 0 );   // 0: fps, 1: ms, 2: mb, 3+: custom
    fpsContainer.appendChild( stats.dom );
}

// Camera object
function createCamera(){
    const fov = 75;
    const aspect =  mainContainer.clientWidth / mainContainer.clientHeight;
    const near = 0.1;
    const far = 500;    // meters
    camera = new THREE.PerspectiveCamera(fov, aspect, near, far);
    camera.position.set( 0, 10, 0 );
}

// Interactive controls
function createControls(){}

// Light objects
function createLights(){}

// Meshes and other visible objects
function createMeshes(){
    const geo = new THREE.PlaneBufferGeometry(1000, 1000, 100, 100);
    const mat = new THREE.MeshBasicMaterial({ color: 0x98FB98, side: THREE.DoubleSide });
    const plane = new THREE.Mesh(geo, mat);
    plane.rotateX( - Math.PI / 2 );

    scene.add(plane);
}

// Renderer object and features
function createRenderer(){
    renderer = new THREE.WebGLRenderer();
    renderer.setSize(mainContainer.clientWidth, mainContainer.clientHeight);
    renderer.setPixelRatio( window.devicePixelRatio );
    // renderer.setClearColor(0xEEEEEE);
    mainContainer.appendChild( renderer.domElement );
}

function onWindowResize() {
  camera.aspect = window.innerWidth / window.innerHeight;
  camera.updateProjectionMatrix();
  renderer.setSize( window.innerWidth, window.innerHeight );
}

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

看来你正在使用 ES6 模块版本PointerLockControls。如果您没有在应用程序中使用模块,请尝试使用以下文件:

https://github.com/mrdoob/ Three.js/blob/dev/examples/js/controls/PointerLockControls.js https://github.com/mrdoob/three.js/blob/dev/examples/js/controls/PointerLockControls.js

three.js R110

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Three.js中添加PointerLockControl? 的相关文章

随机推荐

  • OpenGL 闪烁像素伪影

    我正在尝试在基于体素的网格上实现环境光遮挡 并在面部边缘获得这些闪烁的白色像素 这是我的片段着色器 version 120 varying vec4 color varying vec4 normal void main void floa
  • 没有使用python requests模块获取所有cookie信息

    我正在学习如何使用 python requests 模块登录示例网站 这视频教程 https www youtube com watch v eRSJSKG4mDA让我开始了 从我在 Google Chrome gt Inspect Ele
  • decltype((c)) 中括号的含义? [复制]

    这个问题在这里已经有答案了 我正在读书维基百科上的这篇文章关于C 11 类型推断 feature http en wikipedia org wiki C 11 Type inference 有一个例子 我引用一下 include
  • C# 类/对象可视化软件

    在 Visual Studio 2005 及更早版本中 您可以将代码导出到 Visio 并查看对象之间的关系及其具有的方法 属性和字段 这很棒 因为它允许您调整外观以改善外观 在 VS 2008 中 该选项消失了 据说 被类图系统取代 它很
  • WPF - FrameworkElement - 枚举所有后代?

    我有一个FrameworkElement 真的是一个ToggleButton 其内容中有一个Popup 我这样访问它 ToggleButton button ToggleButton sender Popup popup Popup but
  • 如何查找某个国家/地区人口超过X的城市

    我正在尝试查找丹麦人口超过 10 万的城市 我可以使用此代码找到丹麦的所有城市 SELECT s o WHERE s a
  • scala排序稳定吗?

    Scala 集合有sortBy方法 这个方法稳定吗 def sortList source List Int List Int source sortBy 2 这个例子总是能保持秩序吗 是的 它很稳定 参考scala源码 https git
  • 如何将针对 DTO 的 OData 查询映射到 EF 实体?

    我在 Asp Net Web Api 应用程序中有一个允许 OData 查询的 ODataController 我只允许读取 不允许更新 我没有直接公开数据模型 而是创建了一组 DTO DTO 上的属性名称不一定与 EF 模型上的属性匹配
  • Jupyter笔记本,如何在正确的conda环境中执行系统shell命令?

    我目前在使用 jupyter 笔记本和系统 shell 命令时遇到一些问题 我使用 nb conda kernels 能够从基础环境中启动的 jupyter 笔记本访问我的所有 conda 环境 这在我的大多数用例中都完美运行 为了简单起见
  • KSoap-Android\JCIFS 发送空 HTTP 帖子

    我创建了一个基于 KSOAP Android 和 JCIFS 的 NTLM 身份验证 SOAP 客户端 实现看起来像这样 public class NtlmServiceConnection implements ServiceConnec
  • double 到 unsigned int / char

    I read here https stackoverflow com questions 10541200 casting double to unsigned int that 根据 C99 6 3 1 4 脚注 50 当整数类型的值是
  • 重载函数签名 haskell

    当我编译时 我收到以下错误消息 重复的类型签名 WeightedMedian hs 71 0 39 findVal ValPair gt 双 gt 双WeightedMedian hs 68 0 36 findVal ValPair gt
  • 如何在命令行中使用带有 cut 的正则表达式?

    我有一些这样的输出ls alth drwxr xr x 5 root admin 170B Aug 3 2016 drwxr xr x 5 root admin 70B Aug 3 2016 drwxr xr x 5 root admin
  • 从另一个本地主机访问 markLogic

    我正在尝试使用 markLogic 作为文档存储库并编写一个可以从我的本地主机 Apache 访问它的客户端 在 markLogic 中 我创建了一个新的 REST 服务器 8011 现在我想通过 希望简单的 HTTP 请求 实际上使用 j
  • PHP mysqli 插入不起作用,但没有给出任何错误

    正如标题所示 我尝试进行简单的插入 但实际上没有任何内容插入到表中 我尝试打印出错误 但没有报告任何内容 我的用户表的字段比这 4 个多得多 但它们都应该是默认的 query INSERT INTO users username passw
  • 使用 dplyr 按组连接字符串以获取多列[重复]

    这个问题在这里已经有答案了 您好 我需要按组连接多个列的字符串 我意识到这个问题的版本已经被问过好几次了 参见按唯一标识符聚合并将相关值连接成字符串 https stackoverflow com q 16596515 但它们通常涉及连接单
  • 并非所有参数在字符串格式化期间都会转换。没有%变量[重复]

    这个问题在这里已经有答案了 x input y 1 print x while 1 y if x 1 y y 1 elif x 2 0 even x x 2 print x else x 3 x 1 print x 如果你知道科拉茨猜想是什
  • Amplify UI 在 React js 中无法正常工作

    我正在使用 AWS amplify 进行用户身份验证 UI 不是预期的 但功能没有问题 放大依赖性 dependencies aws amplify ui react 2 1 4 testing library jest dom 5 11
  • 如何在 Backbone.js 视图中触发/绑定自定义事件?

    我有一个使用的主干视图iScroll http cubiq org iscroll 4实现幻灯片放映 iScroll 发布了onScrollEnd事件 但我似乎无法在视图内绑定 订阅它 App Views Scroller Backbone
  • 如何在Three.js中添加PointerLockControl?

    如何在Three js中正确添加PointerLockControl 我尝试使用示例 但没有运气 总是出现某种错误 我像这样通过头部导入库 如果我这样做 function createControls controls new THREE