1

我正在尝试使用 SketchUp API 来导航 3D 模型(缩放、平移、旋转等)。我的最终目标是将它与 Leap Motion 应用程序集成。

然而,现在我认为我的第一步是弄清楚如何通过 Sketchup API 控制基本的导航手势。经过一番研究,我发现有“相机”和“动画”界面,但我认为它们更适合脚本中的“硬编码”路径和动作。

因此我想知道 - 有谁知道我如何编写一个能够接受来自另一个程序的输入的插件(在这种情况下是我最终的 Leap Motion 应用程序)并使用 Sketchup API 将其转换为特定的导航命令(如平移、缩放、 ETC)。这可以使用“相机”和“动画”界面(以某种步进增量)来完成,还是我应该查看其他界面。

像往常一样,示例将是最有帮助的。

谢谢!

4

2 回答 2

1

View,CameraAnimation就是你要找的。也许你甚至不需要Animation上课,你可能只是在UI课堂上使用时间就可以了。取决于你将要做什么的细节。

您可以像这样直接设置相机: Sketchup.active_model.active_view.camera.set(ORIGIN, Z_AXIS, Y_AXIS)

View.camera=或者,如果您觉得有用,也可以使用which 也接受转换时间参数。

对于桥接输入,您始终可以创建一个 Ruby C 扩展来处理应用程序之间的通信。与常规 Ruby 相反,让 SketchUp Ruby 的 C 扩展工作有一些怪癖 - 取决于您如何编译它。几年前我写了一个 hello world 示例:https ://bitbucket.org/thomthom/sketchup-ruby-c-extension

虽然请注意,我已经找到了一个更好的 Windows 解决方案,使用来自 Ruby Installers 的开发工具包:http ://rubyinstaller.org/

于 2013-09-16T21:19:02.007 回答
0

这个答案与我上面的评论有关,当我使用 camera= 将新相机分配给当前视图时,视图看似“跳跃”,但如果我使用 camera.set 则不会。

我发现这是因为原始相机的相机 FOV 不同,而新相机的默认 FOV 为 30。通过使用初始相机的可选视角和 FOV 参数显式创建相机解决了这个问题:

new_camera = Sketchup::Camera.new new_eye, new_target, curr_camera.up, curr_camera.perspective?, curr_camera.fov

希望人们觉得这很有用!

于 2013-10-04T20:38:58.783 回答