问题标签 [vizard]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1264 浏览

python - Python,线程函数不执行,对象消失

我们正在尝试在 Python 中运行此代码,但是当函数 print_time 工作时,TestReactionTime 不执行(它甚至不打印)。对这两个函数的调用是相同的。

同样,独立地,当我们第一次释放球并尝试再次抓住它时,它会消失。

对于任何问题的任何帮助将不胜感激。

(我们使用的程序是 Vizard)

0 投票
1 回答
93 浏览

python - Python 函数 (viztask.waitdraw)

我们有这两个代码。第一个有效,第二个无效。我们已经注释了所有行,并且我们已经验证,在第二行中,代码可以正常工作,直到我们引入该行:

在第二个中,它甚至没有 print "collision",这是第一行,即使在viztask.waitDraw()下面声明了。

工作版本:

非工作版本:

0 投票
0 回答
200 浏览

python - 两个盒子的碰撞:VIZARD:PYTHON

我使用了放置在有两张桌子的环境中的盒子的碰撞。我用鼠标光标抓住对象并放在另一张桌子上。但是在对象之间进行碰撞检测的情况下,我面临一个问题。当对象和鼠标相互碰撞(最小距离)时,我对对象和鼠标使用了接近传感器,然后鼠标拾取/链接该对象。我也在使用相同的传感器进行碰撞,vizard bt 盒子文档中给出的一些物理概念相互碰撞,但由于它们飞行的重力。我把密度放在文档中给出的 bt i 不起作用。然后决定从这个逻辑中转移并尝试其他方法,我尝试形成两个邻近区域,一个用于 boxex 碰撞,一个位于盒子和鼠标之间,但盒子正在飞行。我对由 vizard 定义的板条箱使用了类似的概念,它在那里工作而不是在块中。请给出一些想法来解决这个问题。在这里,我附加了三个功能 - 一个用于手,另一个用于链接鼠标和块以及最后放置块。在环境中,我也已经使用了碰撞面板和碰撞表。因此,对于碰撞,我应该采用什么方法,因为当我使用相同的接近传感器时,它不会起作用。所有对象都放置在 vizard 的原点,然后手动设置放置在桌子上的位置。在环境中,我也已经使用了碰撞面板和碰撞表。因此,对于碰撞,我应该采用什么方法,因为当我使用相同的接近传感器时,它不会起作用。所有对象都放置在 vizard 的原点,然后手动设置放置在桌子上的位置。在环境中,我也已经使用了碰撞面板和碰撞表。因此,对于碰撞,我应该采用什么方法,因为当我使用相同的接近传感器时,它不会起作用。所有对象都放置在 vizard 的原点,然后手动设置放置在桌子上的位置。

/我在这里尝试了一些东西,但它不起作用。在这里,我使用接近传感器来碰撞盒子。xb11,yb11,zb11=b[0].getPosition() ####### 接近位置 1 打印 xb11,yb11,zb11

块的/代码我将与块的碰撞与我与平面/和桌子放置的相同,而与地平面然后重力将物体/向下拉,所以我与桌子发生碰撞以将块放在/桌子上

/BLOCK 1--------- 表 1 全局 Block0

/块 2--------- 表 1

/块 3--------- 表

/块 1---------TABLE2

/BLOCK 2---------TABLE2 全局 Block11
Block11=viz.addChild('b7.osgb') Block11.setPosition(-7.5,1.15,5) Block11.setEuler(90,0,0) Block11 .setScale(.3,.01,.3) b2.append(Block11)

/BLOCK 3---------
TABLE3 全局 Block22 Block22=viz.addChild('b9.osgb') Block22.setPosition(-7.5,1.1,6) Block22.setEuler(90,0,0) Block22 .setScale(.3,.01,.3) b2.append(Block22) #

0 投票
0 回答
419 浏览

python - 使用 Vizard 的 Oculus rift 相机转动问题

我正在尝试使用 Vizard 5 对 Oculus rift 进行模拟。当 oculus 也连接到主视图时,我无法将鼠标链接到 MainView 方法,这意味着我想让鼠标同时移动相机和 oculus。任何帮助,将不胜感激。

这是到目前为止的代码:

0 投票
0 回答
20 浏览

object - 如何在 Vizard 中检测对象是否在我的 vewport 之外?

如果它在我的视口之外,有人可以指出我检测物体的正确方向。我想要一个固定的视口并且对象在 3d 空间中移动,但如果对象落在视口之外,我需要重置它们。

0 投票
1 回答
189 浏览

python - Python 3.4 仅在控制台中不运行 tkinter

当我在 Python 3.4 的 IDLE 中运行该程序时,该程序可以正常工作并按预期工作。但是,当使用 python 控制台(通过 python.exe)时,控制台返回“ImportError: No Module named tkinter”。我知道 tkinter (3.x) 和 Tkinter (2.x) 的区别,并且确信不是这样。它可能与我正在使用的非标准 Python 版本 WorldViz 的 Vizard 有关。

0 投票
1 回答
8293 浏览

python - 旋转矩阵到四元数等价

我在刚体上跟踪 3 个点(3D,xyz),我用它来定义局部坐标系。我正在使用这个局部坐标系的方向(在全局参考系中)来设置 VR 程序中的视图方向。为此,并避免使用欧拉角锁定万向节,我尝试使用四元数来设置视图方向。

我从 3 个点创建一个旋转矩阵,然后使用Wikipedia上描述的这种方法来提取假定的等效四元数。然后我简单地将视图方向设置为计算的四元数。

但是,我观察到的是,当我还应该能够同时看到偏航和滚动的变化时,主要只有 1 个自由度(俯仰)。我已经从旋转矩阵中提取了欧拉角,它除了在万向节锁定之外工作得很好。所以我确信旋转矩阵是可用的,尽管在我的情况下它是不合适的。

我的问题是为什么假定的等效四元数似乎只会改变“俯仰”自由度?

我知道四元数是围绕 1 个轴的旋转,但是我认为如果它是从旋转矩阵派生的,最终结果将与设置欧拉角相同?

这是我在python中的代码:

任何帮助或想法都会很棒!

0 投票
1 回答
1738 浏览

python-2.7 - 使用旋转矩阵偏移欧拉角

我正在寻找将偏移量应用于一组欧拉旋转​​的正确方法。我想在给定一组特定的欧拉角 (x1,y1,z1) 的情况下进行转换,如果我对它们进行转换,我会得到一个 (0,0,0) 的欧拉序列。转换后的所有其他欧拉序列 (xi,yi,zi) 将表现得像 (x1,y1,z1) 是 (0,0,0)。

背景:

我正在使用 Oculus DK2 HMD 显示虚拟环境(Vizard 5,Python 2.7.5),同时使用 Vicon 动作捕捉系统(Nexus 2)来更新位置和方向。我可以从 Vicon 系统获得 HMD 的欧拉角(来自标记集群,而不是 DK2 陀螺仪),但是当面向我想要的 (0,0,0) 方向时,HMD 具有非零旋转序列。

问题:

我很难考虑什么变换(旋转矩阵?)我可以发现可以采用 (-105, 110, -30) 之类的序列并使其 (0,0,0) 成为无用的矩阵零。如果旋转矩阵全为零,则任何序列都将转换为 (0,0,0))。我想到的公式是(请忽略语法):

[0,0,0] = (3x3)R*(3x1)[-105,110,-30] 什么是 R?R 不能是 3x3 零矩阵。

试图:

我愚蠢地试图简单地减去欧拉角,如下所示:

唉,

在此处输入图像描述

我确信这是可能的,事实上我过去做过类似的事情,我必须在校准位置将标记集群转换为刚体的框架。但在这种情况下,我就是无法绕过琐碎的解决方案(零矩阵)。如果碰巧有人会使用四元数来解释这一点,我也可以使用它们。

0 投票
2 回答
434 浏览

python - Python在.exe旁边创建文件夹

我正在使用 Vizard 从 python 脚本创建一个 .exe 文件。我需要这个脚本来创建一个位于 .exe 文件旁边的文件夹

当我从 IDE 执行时工作正常,但在一个 exe 文件中,它会在 Windows/Users/Temp/randomfoldername 的 Appdata 文件夹中抛出数据。

另外,我总是应用程序是脚本,即使它被打包成 exe。

有人可以在这里指出我正确的方向吗?提前致谢

0 投票
2 回答
319 浏览

python - 如何在 Python 中的列表中安排不同时间的操作

我正在尝试使用 Python 在 Vizard 中安排一个动作(哔声)。但是,我希望在试验开始后的特定时间发出哔声。

到目前为止,我所拥有的(例如,在运行一次之后)给了我一个时间列表:[ 1.89229142 5.2610474 9.86058804 11.43137033 13.87078666] 并且正在以似乎不同的间隔播放声音并打印出上述元素时序表。只是它实际上并没有将这些元素用作播放的秒数/时间。

我的问题是:我如何让 Python 知道这些不仅仅是数字,而是自函数/试用开始以来的时间?可能我应该在某个地方使用 time.time() ,但我只是不确定如何到达那里的逻辑。

根据 jacantebury 在对他的回答的评论中的建议进行编辑:这是关闭工作代码。正如 jacanterbury 所暗示的,我认为时间上的不匹配与帧速率有关。

这现在给了我 ('hello world', '- now: ', 1.7820000648498535) ('hello world', '- now: ', 3.133000135421753) ('hello world', '- now: ', 4.5350000858306885) ('hello world ', '- now: ', 11.040000200271606) ('hello world', '- now: ', 18.897000074386597) 这非常接近我的列表元素(即时间和我最初想要的)。