首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何将TrackballControls应用于移动目标?

如何将TrackballControls应用于移动目标?
EN

Stack Overflow用户
提问于 2014-07-20 14:58:55
回答 1查看 1.9K关注 0票数 4

我想将three.js脚本TrackballControls应用于移动对象,以保留在物体在场景中移动时缩放和旋转相机的能力。例如,我希望能够让相机“跟随”一个移动的行星,而用户保留了缩放和旋转行星的能力。下面是一个基本的“小提琴”:

http://jsfiddle.net/mareid/8egUM/3/

(由于某种原因,鼠标控制实际上不工作在jsfiddle上,但在我的机器上却起作用)。

我希望能够把相机附加到红色的球体上,这样它就能和它一起移动,但是不会失去缩放和旋转的能力。我可以通过在render()函数中添加这样的行来让摄像机很容易地跟踪球体:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mouseControls.target = new THREE.Vector3(object.position);
camera.position.set(object.position.x,object.position.y,object.position.z+20);

但是如果我这样做的话,固定的camera.position线超越了TrackballControls的缩放、旋转等能力,从数学上来说,我觉得应该有可能将所有TrackballControls计算的起源移到红色球体的中心,但我不知道如何做到这一点。在_this.target和_eye向量中,我尝试了各种红色球体位置的矢量加法,但都没有效果。

谢谢你的帮忙!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-20 15:38:36

我推荐OrbitControls而不是TrackballControls。我在这里的回答主要适用于OrbitControls;同样的原则也可能适用于TrackballControls (我已经有一段时间没有看过它的代码了)。

如果您查看OrbitControls是如何工作的,您应该注意到它使用this.object作为摄像机,this.target用于摄像机所要查看的位置,它使用向量(它们之间的差异)来进行一些计算。移动适用于两个位置时,摇摄;只有相机被移动时,旋转。this.pan被设置为移动相机,但它只处理垂直于this.objectthis.target矢量的摇摄,因为它设置了摇摄矢量。

无论如何,如果将向量从object.position减为controls.target,并将controls.pan设置为该向量,则应该会使其跳转到该对象:

固定示例代码:

OrbitControls.js添加一个助手,该助手可以访问其本地pan变量:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function goTo( vector ) {
    // Cloning given vector since it would be modified otherwise
    pan.add( vector.clone().sub( this.target ) );
}

你自己的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function animate() {

    requestAnimationFrame(animate);
    mouseControls.goTo( object.position ); // Call the new helper
    mouseControls.update();
    render();

}

您还可能希望将mouseControls.noPan设置为true。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24855708

复制
相关文章
如何在 Chrome 中执行 JavaScript 代码
要在浏览器中执行 JavaScript 脚本,首先你的浏览器得支持。现在主流推荐 Chrome 浏览器,也可以使用基于 Chromium 的 Edge 浏览器。下面来介绍如何在 Chrome 中打开开发者工具,以及如何在开发者工具中运行调试 JavaScript 代码。
村雨遥
2022/03/14
6.1K0
如何在 Chrome 中执行 JavaScript 代码
如何在Windows资源管理器右键菜单中 添加CMD
我们在用windows时经常需要在某个目录下执行执行一些dos命令,通常我们会在开始菜单的运行下键入:cmd,开启dos命令窗口,然后在cd到目标操作目录,每次这样操作比较麻烦。下面介绍一种直接在资源
晓晨
2018/06/22
1.3K0
执行Cmd命令[通俗易懂]
EventManager.WriteOutput(“正在前端构建…”); var dir = Path.Combine(InputInfo.BranchPath, ConfigInfo.Instance.RootWebDir, “node”); var root = Path.GetPathRoot(dir).Substring(0, 2); StringBuilder sb = new StringBuilder(); Process p = new Process(); p.StartInfo.FileName = “cmd.exe”; p.StartInfo.UseShellExecute = false; p.StartInfo.RedirectStandardInput = true; p.StartInfo.RedirectStandardOutput = true; p.StartInfo.RedirectStandardError = true; p.StartInfo.CreateNoWindow = true; p.OutputDataReceived += (sender, a) => sb.AppendLine(a.Data); p.Start(); p.StandardInput.WriteLine(root); p.StandardInput.WriteLine($”cd {dir}”); p.StandardInput.WriteLine(@”grunt.cmd” + “&exit”); p.BeginOutputReadLine(); p.WaitForExit(); string output = sb.ToString(); p.Close(); if (output.IndexOf(“error”, StringComparison.OrdinalIgnoreCase) != -1) { EventManager.WriteOutput(output); EventManager.WriteOutput(“前端构建失败”); return false; } EventManager.WriteOutput(“前端构建完成”); return true;
全栈程序员站长
2022/09/19
2.9K0
Windows远程执行cmd命令的9种方法
IPC$+AT 445 PSEXEC 445 WMI 135 Winrm 5985(HTTP)&5986(HTTPS)
HACK学习
2019/08/15
34K0
Windows远程执行cmd命令的9种方法
Python在windows CMD中输出中文
在windows CMD中输出中文是比较烦的事情,最简单的就是增加一个windows.py,用的时候import一下: #!/usr/bin/env python # -*- coding: utf-8 -*- import sys class UnicodeStreamFilter: def __init__(self, target): self.target = target self.encoding = 'utf-8' self.erro
happy123.me
2018/06/04
2.5K0
windows开机自动执行bat脚本启动cmd命令窗口并执行命令,最后自动关闭cmd命令窗
先说bat脚本吧,随便在桌面建一个文本文档,在里面写脚本,内容是,先启动cmd命令窗,并执行一个命令,最后自动关闭cmd窗,如下:
全栈程序员站长
2022/08/05
6.6K0
windows开机自动执行bat脚本启动cmd命令窗口并执行命令,最后自动关闭cmd命令窗
Windows CMD 换肤
由于经常使用到 Windows 下的 CMD 终端进行各种操作,特别是集成了 Ubuntu 子系统之后,在 Windows 平台上进行 C 开发更方便了。为了呼出 WSL 子系统,我习惯在 CMD 下进行,可默认皮肤不够美观,为了让自己心情愉悦,检索了一番换肤方法,并在此简单记录。
宋天伦
2021/03/05
9490
Windows CMD 换肤
.NET 调用CMD执行
using System.Diagnostics; public class CmdHelper { private static string CmdPath = @"C:\Windows\System32\cmd.exe";
用户5760343
2022/05/24
1.9K0
Python - 执行cmd命令
python操作cmd 我们通常可以使用os模块的命令进行执行cmd 方法一:os.system os.system(执行的命令) # 源码 def system(*args, **kwargs): # real signature unknown """ Execute the command in a subshell. """ pass 方法二:os.popen(执行的命令) os.popen(执行的命令) # 源码 def popen(cmd, mode="r", bufferin
小菠萝测试笔记
2020/06/09
3.1K0
nodejs 执行cmd命令
答:所有的编程语言都有 执行 系统 命令 的接口, nodejs 也不例外,比如删除调用 shell命令 ,将一个HTML文件转换成PDF文件,如果是PHP,很简单:`prince -v builds/pdf/book.html -o builds/pdf/book.pdf`在PHP里系统 命令 可以放在反单引号 (`)里 执行 。 如果你要是使用 nodejs ,你需要调用引用var exec = require ('child_p...
Power
2023/05/25
1.6K0
nodejs 执行cmd命令
如何在网页中执行一段 pandas 代码?
前天正式宣传了一下我的「图解Pandas」(pandas.liuzaoqi.com),短短两天访问量就已经突破一万次。
刘早起
2022/09/21
1K0
Windows下cmd中Tree命令的使用[通俗易懂]
├── images │ └── scottsdale │ ├── IMG_1786-2.jpg │ ├── IMG_1787-2.jpg │ └── IMG_1788-2.jpg ├── image_stitching.py ├── image_stitching_simple.py └── output.png
全栈程序员站长
2022/09/16
1.5K0
Windows下cmd中Tree命令的使用[通俗易懂]
python执行cmd命令
最典型的模块 一,执行cmd并读取返回值 import subprocess p = subprocess.Popen("ls", stdout=subprocess.PIPE, universal_newlines=True) p.wait() result_lines = p.stdout.readlines() for line in result_lines: print(line) 二,执行cmd命令 import subprocess cmd = "ffmpeg
py3study
2020/01/09
2K0
绑定事件中 如可控制函数的执行次数
var flag = true; function onlyOne() { if(flag) { "这里是要执行的代码"; } flag = false//该方法是控制函数仅执行一次 因为flag是全局变量 onlyOne()函数执行一次后flag就变成false了 函数就执行不了了
大当家
2018/06/28
2.3K0
windows cmd进入mysql[通俗易懂]
在DOS命令窗口输入 mysql -hlocalhost -uroot -p回车 进入mysql数据库,其中-h表示服务器名,localhost表示本地;-u为数据库用户名,root是mysql默认用户名;-p为密码,如果设置了密码,可直接在-p后链接输入,如:-p123456,用户没有设置密码,显示Enter password时,直接回车即可。
全栈程序员站长
2022/08/22
5.1K0
windows cmd进入mysql[通俗易懂]
Windows CMD命令大全
虽然随着计算机产业的发展,Windows 操作系统的应用越来越广泛,DOS 面临着被淘汰的命运,但是因为它运行安全、稳定,有的用户还在使用,所以一般Windows 的各种版本都与其兼容,用户可以在Windows 系统下运行DOS,中文版Windows XP 中的命令提示符进一步提高了与DOS 下操作命令的兼容性,用户可以在命令提示符直接输入中文调用文件。
monster_moya
2020/07/09
5K1
Windows常用cmd命令
Windows有很多常用的工具可以提高我们的工作效率以及快速进行系统设置修改,例如计算器、画图、写字板、注册表管理器,但这些工具在桌面没有快捷方式,因而在使用时不易找到,值得庆幸的是,Windows提供了打开这些工具的cmd命令,通过输入一个简单的命令就可以打开。
小诸葛
2021/03/04
1.4K0
Windows常用cmd命令
Windows 系统中 CMD 工具常用命令
Windows 系统中 CMD 工具常用命令 Java 现阶段开发必备的工具有 JDK、Maven、Node.js(npm)、Git、MySql。 相应的,一些常用命令可以加快我们的开发流程。版本查看命令 安装的工具添加了 Path 环境变量后,可以直接在 CMD 命令行中使用工具自带的命令。 而命令的成功执行,标志着工具安装成功。 命令 作用 java -version 查看 JDK 版本 mvn -version 查看 Maven 版本、位置和 JDK 最新版(电脑中安装的)版本、位置 node -v(
廿四
2023/02/21
9100
如何在 docker 中执行 crontab
新建名为hello-cron的文件 内容为: # PATH非常重要,因为cron bash和系统环境变量不一致 PATH="/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" * * * * * echo hello > /proc/1/fd/1 2>/proc/1/fd/2 # An empty line is required at the end of this file for a valid c
马哥Python
2019/06/27
7.1K0
点击加载更多

相似问题

Windows cmd使用&& cmd;执行多个doskey宏

11

Jenkins:执行调用其他cmd的windows cmd?

10

Windows - Docker CMD不执行

26

Python执行windows cmd函数

40

从c#代码执行windows 10 IOT cmd命令

118
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文