三个js中的场景旋转问题

2024-06-28

我尝试动态地旋转有孩子的场景。一切工作正常,但是当我平移相机并旋转场景时,轨道控制的枢轴点会损坏并且平移无法正常工作。主要思想是创造围绕物体旋转的 hdr 幻觉。抱歉我的英语不好,这真的很难描述,希望你能理解我的想法。

这是一个小代码笔example https://codepen.io/vinar22/pen/dyoVZxj

var container = document.getElementById('three');
var width = container.offsetWidth;
var height = container.offsetHeight;
var range = document.getElementById('r');
var sceneChildren = new THREE.Group();
var rotationY = 0;
var renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true});
renderer.setSize(width, height);
container.appendChild(renderer.domElement);

var scene = new THREE.Scene();

var cubeGeometry = new THREE.CubeGeometry(100, 100, 100);
var cubeMaterial = new THREE.MeshLambertMaterial({ color: 0xffffff });
var cube = new THREE.Mesh(cubeGeometry, cubeMaterial);
cube.rotation.y = Math.PI * 45 / 180;


var camera = new THREE.PerspectiveCamera(45, width / height, 0.1, 10000);
camera.position.y = 160;
camera.position.z = 400;
camera.lookAt(cube.position);

sceneChildren.add(cube, camera);
scene.add(sceneChildren)

var skyboxGeometry = new THREE.CubeGeometry(10000, 10000, 10000);
var skyboxMaterial = new THREE.MeshBasicMaterial({ color: 0xf3f3f3f3, side: THREE.BackSide });
var skybox = new THREE.Mesh(skyboxGeometry, skyboxMaterial);

scene.add(skybox);

var pointLight = new THREE.PointLight(0xff33fff);
pointLight.position.set(0, 300, 200);


var pointLight2 = new THREE.PointLight(0xffffff);
pointLight2.position.set(0, -300, 200);

scene.add(pointLight, pointLight2);

var clock = new THREE.Clock;

let controls = new THREE.OrbitControls(camera, renderer.domElement);
controls.screenSpacePanning = true;

range.addEventListener('input', (e) => {
  rotationY = e.target.value
})

function render() {
        requestAnimationFrame(render);
        sceneChildren.rotation.y = rotationY;
        controls.update();
        renderer.render(scene, camera);
}

render();
#three {
        height: 500px;
        width: 500px;
}
#r {
  z-index: 99999;
  float: left;
  background: red;
}
<script src="https://cdn.jsdelivr.net/npm/[email protected] /cdn-cgi/l/email-protection/build/three.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected] /cdn-cgi/l/email-protection/examples/js/controls/OrbitControls.js"></script>
Rotate scene children <input type="range" min="0" max="60" step="0.01" id="r">
<div id="three"></div>

- -更新 - -

显示问题的步骤: 1.通过范围输入旋转场景子项 2. 通过右键单击鼠标平移相机(在此步骤中枢轴点失效) 3.再次旋转场景子项(可以看到相机不再随着立方体旋转)


None

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

三个js中的场景旋转问题 的相关文章

随机推荐

  • 使用 Java bean 作为 Grails 域类

    有很多类似的问题 但我无法确切地找到如何在 grails 应用程序中使用 POJO 模型 考虑以下 Java Bean package com example java public class UserBean String name S
  • 链接到 Django 页面的最佳方式

    我设法为我的索引创建一个 URL 标记 但现在我很困惑如何添加到其他页面的链接 我把这个放在我的urls py url r index name index 接下来我将此标签放入 href 中 url index 但是如果我想创建一个新页面
  • Flutter - 将文件保存到下载文件夹 - downloads_path_provider

    我正在使用 flutter 开发一个移动应用程序 为此我用了下载路径提供者 https pub dev packages downloads path provider获取手机的下载目录 模拟器返回 storage emulated 0 D
  • 如何获取表中所有列的计数(*)?使用 PostgreSql

    我有一堆表 其中几个有数百列 我需要获取每列的非空值计数 并且我一直在手动执行此操作 我想找出一种方法来获取表中所有列的所有计数 我查了 stackoverflow 和 google 但找不到答案 我尝试了这个 但它只是为每列返回 1 的值
  • Mongoose 密码哈希

    我正在寻找一种使用 mongoose 将帐户保存到 MongoDB 的好方法 我的问题是 密码是异步散列的 setter 在这里不起作用 因为它只能同步工作 我想了两种方法 创建模型的实例并将其保存在回调中 哈希函数 在 保存 上创建预挂钩
  • 将数据从 CSV 文件导入 MySQL,科学记数法

    我正在使用 LOAD DATA INFILE 从 CSV 读取数据并将其插入到 MySQL 表中 问题在于 CSV 中的一列采用科学记数法 当读取该列并将其加载到表中时 它不会进入 DOUBLE FLOAT 或 REAL 类型的列 有针对这
  • 如何使 Puppeteer 在客户端与 ReactJS 应用程序一起工作

    我对 React 相当陌生 我正在开发一个应用程序 它将拍摄网页的实际屏幕截图 并且该应用程序可以在所拍摄的屏幕截图上绘制和添加涂鸦 我最初使用 html2canvas 和 domToImage 来获取客户端屏幕截图 但它不会完全按照网页中
  • WCF [DataContract] set/get 未执行

    我对 WCF 有点陌生 我认为我不完全理解 DataContracts 的含义 我有这个 RequestArray 类 DataContract public class RequestArray private int m TotalRe
  • 如何知道应该使用哪个 cuDNN 版本?

    我计划在 Linux 上使用 cuDNN 如何知道我需要哪个 cuDNN 版本 我应该始终使用最新的吗 例如 选择正确的 CUDA 版本依赖于取决于 https stackoverflow com a 30820690 395857Nvid
  • React-native android 样式textInput

    有没有办法在react native android中设置textInput的样式 就像更改选择时的下划线颜色和光标颜色一样 从 React Native 0 21 版本开始 仍然无法通过 view props 来设置光标颜色的样式 我已通
  • 在Vue js中从父组件定义子组件的布局

    我是 Vue 新手并正在使用Vue 2 2 1 我想知道是否可以创建一个可重用的组件 其布局可以由其父组件定义 例如 考虑以下伪代码 Parent template
  • 如何处理node.js中的for循环?

    我在 node js 中有以下代码 var months jan feb march april may june july august sep oct nov dec for var i 0 j months length i
  • 捕获播放视频的屏幕截图并邮寄该屏幕截图

    我正在播放视频 我需要捕获视频屏幕截图 在我需要邮寄后分享它 请向我提供任何链接的示例 谢谢 昌杜 如果您不想以编程方式执行此操作 只需使用 eclipse 并转到 DDMS 然后使用屏幕捕获 这可能对您有用 http www howtof
  • PHP/Apache 内的 Inkscape 不会将字体渲染为 PNG

    今天发现的一个问题和这个类似未解答的问题 https stackoverflow com questions 7827445 processstartinfo with inkscape on iis is not using any fo
  • 如何列出 scikit-learn 中的所有分类/回归/聚类算法?

    类比于如何列出所有支持 Predict proba 的 scikit learn 分类器 https stackoverflow com questions 30056331 how to list all scikit learn cla
  • 除了主 ELF 可执行文件之外,如何从命令行预加载 gem5 中给定原始字节的内存?

    当模拟开始时 在执行任何指令之前 我需要立即以给定的方式设置内存 我知道这本质上是 ELF 加载程序加载主要可执行文件的操作 但试图通过fs py kernel多次似乎没有效果 我可以尝试使用链接器脚本将该数据破解到我的邮件 ELF 可执行
  • 如何突出显示网格控件的边框线

    我编写了一些代码 以便将 100 x 100 个单元格添加到网格中 问题是我想突出显示分割网格的行 列的线 我应该使用什么属性 或者我应该如何做 下面是创建网格单元的代码 public partial class MainWindow Wi
  • 接口只是“语法糖”吗?

    我主要使用 PHP 和 Python 我一直在阅读有关面向对象编程中的接口的内容 但看不出使用它的优势 多个对象可以实现相同的接口 但是多重继承不提供这一点吗 如果我可以检查 Python 中继承自多个类的对象中是否存在方法 为什么我需要创
  • VCS 和 SCM 有什么区别?

    我正在实践中对版本控制进行一些研究 在书籍和论文中似乎对同一事物有两个名称 软件配置管理 SCM 和版本控制系统 VCS 前者似乎很受软件工程师 Java 程序员的欢迎 而后者则受到系统管理员的欢迎 但在外行人看来 两者似乎意味着同一件事
  • 三个js中的场景旋转问题

    我尝试动态地旋转有孩子的场景 一切工作正常 但是当我平移相机并旋转场景时 轨道控制的枢轴点会损坏并且平移无法正常工作 主要思想是创造围绕物体旋转的 hdr 幻觉 抱歉我的英语不好 这真的很难描述 希望你能理解我的想法 这是一个小代码笔exa