作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在 TransformGroup 中有一个场景,允许鼠标缩放/旋转/平移。
我需要将相机位置设置得足够远,以便我可以看到整个场景,我使用以下代码来完成:
// Position the position from which the user is viewing the scene
ViewingPlatform viewPlatform = universe.getViewingPlatform();
TransformGroup viewTransform = viewPlatform.getViewPlatformTransform();
Transform3D t3d = new Transform3D();
viewTransform.getTransform(t3d);
t3d.lookAt(new Point3d(0,0,50), new Point3d(0,0,0), new Vector3d(0,1,0));
t3d.invert();
viewTransform.setTransform(t3d);
执行上面的代码是因为我可以用鼠标操作场景。但是,如果我换掉这一行:
t3d.lookAt(new Point3d(0,0,50), new Point3d(0,0,0), new Vector3d(0,1,0));
与:
// Change value from 50 to 90 to push the camera back further
t3d.lookAt(new Point3d(0,0,90), new Point3d(0,0,0), new Vector3d(0,1,0));
我失去了使用鼠标操作屏幕的能力。
如何在将相机向后推得更远的同时保持用鼠标变换的能力,以便我可以查看整个屏幕?
非常感谢!
最佳答案
GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
Canvas3D canvas3d = new Canvas3D(config);
// Manually create the viewing platform so that we can customize it
ViewingPlatform viewingPlatform = new ViewingPlatform();
// **** This is the part I was missing: Activation radius
viewingPlatform.getViewPlatform().setActivationRadius(300f);
// Set the view position back far enough so that we can see things
TransformGroup viewTransform = viewingPlatform.getViewPlatformTransform();
Transform3D t3d = new Transform3D();
// Note: Now the large value works
t3d.lookAt(new Point3d(0,0,150), new Point3d(0,0,0), new Vector3d(0,1,0));
t3d.invert();
viewTransform.setTransform(t3d);
// Set back clip distance so things don't disappear
Viewer viewer = new Viewer(canvas3d);
View view = viewer.getView();
view.setBackClipDistance(300);
SimpleUniverse universe = new SimpleUniverse(viewingPlatform, viewer);
关于java - 如何设置ViewingPlatform和更新TransformGroup?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1300447/
我刚刚开始图形作业,这是我第一次使用 Java3D。我已经开始尝试制作一把椅子(不要 mock 以下内容 :P)。 我只是想知道是否有人可以告诉我正确的使用模式,因为我很确定我有点偏离。 这是我画的:
我正在寻找在一个对象中组合多个变换,我发现了如何但问题是当我尝试放置 时变换组 ,它给出了一个错误 “无法解析属性路径‘RenderTransform.ScaleX’中的所有属性引用。验证适用的对象是
我是一名优秀的程序员,十分优秀!