首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java3D语义域大小太小,无法容纳对象

Java3D语义域大小太小,无法容纳对象
EN

Stack Overflow用户
提问于 2012-01-26 23:45:21
回答 1查看 2.1K关注 0票数 2

默认的宇宙边界是x=-1米,1米,y=-1,1和z=-1,1。当对象与这些边界相交时,它们仅部分渲染。我如何设置另一个宇宙大小?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-14 02:10:17

实际上,默认的宇宙在技术上是无限的,毕竟它是一个虚拟的宇宙。

这就是Java3D世界的工作原理:

来源:

  • http://java.sun.com/developer/onlineTraining/java3d/j3d_tutorial_ch1.pdf (第1-11页)

因此,宇宙并不是太小,你的对象对于你试图获得的视图来说只是太大了。站在一座巨大的建筑旁边,你不可能一次看到整个建筑,但如果你后退一步,你可以从远处看到所有的东西,它看起来更小。因此,您需要移动对象或移动视图。下面是如何移动对象的方法:

代码语言:javascript
运行
复制
TransformGroup moveGroup = new TransformGroup();
Transform3D move = new Transform3D();
move.setTranslation(new Vector3f(0.0f, 0.0f, -10.0f));
//^^ set the Vector3f to where you want the object to be
moveGroup.setTransform(move);
moveGroup.addChild(YOUR_OBJECT);

您还可以更改查看平台的查看位置。下面是你如何做到这一点:

代码语言:javascript
运行
复制
public class MoveEye extends Applet
{
    public MoveEye()
    {
        setLayout(new BorderLayout());
        GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
        Canvas3D canvas = new Canvas3D(config);
        add("Center", canvas);

        BranchGroup content = getScene();
        content.compile();

        SimpleUniverse universe = new SimpleUniverse(canvas);
        Transform3D move = lookTowardsOriginFrom(new Point3d(0, 0, -3));
        universe.getViewingPlatform().getViewPlatformTransform().setTransform(move);
        universe.addBranchGraph(content);
    }

    public BranchGroup getScene()
    {
        BranchGroup group = new BranchGroup();

        group.addChild(new ColorCube(.5));

        return group;
    }

    public Transform3D lookTowardsOriginFrom(Point3d point)
    {
        Transform3D move = new Transform3D();
        Vector3d up = new Vector3d(point.x, point.y + 1, point.z);
        move.lookAt(point, new Point3d(0.0d, 0.0d, 0.0d), up);

        return move;
    }

    public static void main(String args[])
    {
        Frame frame = new MainFrame(new MoveEye(), 256, 256);
    }
}

移动视图而不是移动对象可能是一个很好的做法,但在这种情况下,我想你可以做任何一件事,我希望这会有帮助!

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

https://stackoverflow.com/questions/9020783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档