java - 在 Java3D 中选择并移动多个形状

标签 java 3d java-3d

有没有一种简单的方法可以在 Java3D 中同时选择和移动(旋转、平移、缩放)多个形状?我看过一些示例,您可以选择(单击)单个形状并拖动它,但我还没有找到选择和移动多个形状的简单方法。

我想要做的是:

  • 屏幕上有许多未选择的形状
  • 选择一个或多个形状(通过单独单击或拖动框)
  • 使用鼠标监听器仅移动选定的形状
  • 当形状未被选择时,它们应该留在原处并停止移动
  • 添加新形状后,它们应留在原处并开始移动

我最初的想法是有 2 个分支组“选定”和“未选定”。 Selected BranchGroup 将具有附加到根的父 TransformGroup,Unselected BranchGroup 将直接附加到根。当项目被选择时(我可以使用 PickCanvas 来完成),它们将从未选定的 BG 中删除并放入选定的 BG 中。

这样做的主要问题是,当选择或取消选择形状时,形状会跳跃。这是因为他们正在经历他们将要经历的群体的转变。

我觉得可能有一些更简单的方法可以做到这一点,也许可以利用 Java3D 中内置的东西。

最佳答案

我想出的最好方法是使用我在最初的问题中建议的 2 Branch Group 方法。

您创建 2 个分支组,一个用于选定的节点,一个用于未选定的节点。当您将节点从一个组移动到另一组时,必须平移各个节点,使它们保持在当前位置,而不是跳转到它们要加入的新分支组的平移。

关于java - 在 Java3D 中选择并移动多个形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8013331/

相关文章:

opengl - 计算法线并将其应用到三角形网格

java - 如何在 Java 3D 中旋转对象?

Java3D 不会向我显示任何内容

java - 图像在 3D 空间中绕 Y 轴旋转

java - 将插件添加到本地jar的gradle buildscript中

java - 如何修复 'This operation can be a deadlock cause'

winforms - Powershell 3D WinForms 3D 图表

typescript - Three.js ShaderMaterial 仅适用于某些 GPU

java - 为什么增强的for循环比普通的for循环更有效

java - Maven安装生命周期阶段不会调用资源阶段