我刚刚开始使用Java3D编程。 我认为我已经建立了一些关于场景graphics如何工作的基本直觉,但是应该起作用的东西是行不通的。

我做了一个绕y轴旋转金字塔的简单程序。 这是通过将一个RotationInterpolator R添加到金字塔上方的TransformGroup的。 然后,我想嘿,我现在可以从这个TransformGroup删除RotationInterpolator ,然后将其添加到我的ViewPlatform叶上面的TransformGroup 。 这应该工作,如果我已经了解如何工作。 将RotationInterpolator添加到此TransformGroup应使该TransformGroup旋转,而ViewingPlatform是TransformGroup的子项。 任何想法,我的推理是有缺陷的?

以下是设置Universe的代码,以及视图分支组。

import java.awt.*; import java.awt.event.*; import javax.media.j3d.*; import javax.vecmath.*; public class UniverseBuilder { // User-specified canvas Canvas3D canvas; // Scene graph elements to which the user may want access VirtualUniverse universe; Locale locale; TransformGroup vpTrans; View view; public UniverseBuilder(Canvas3D c) { this.canvas = c; // Establish a virtual universe that has a single // hi-res Locale universe = new VirtualUniverse(); locale = new Locale(universe); // Create a PhysicalBody and PhysicalEnvironment object PhysicalBody body = new PhysicalBody(); PhysicalEnvironment environment = new PhysicalEnvironment(); // Create a View and attach the Canvas3D and the physical // body and environment to the view. view = new View(); view.addCanvas3D(c); view.setPhysicalBody(body); view.setPhysicalEnvironment(environment); // Create a BranchGroup node for the view platform BranchGroup vpRoot = new BranchGroup(); // Create a ViewPlatform object, and its associated // TransformGroup object, and attach it to the root of the // subgraph. Attach the view to the view platform. Transform3D t = new Transform3D(); Transform3D s = new Transform3D(); t.set(new Vector3f(0.0f, 0.0f, 10.0f)); t.rotX(-Math.PI/4); s.set(new Vector3f(0.0f, 0.0f, 10.0f)); //forandre verdier her for å endre viewing position t.mul(s); ViewPlatform vp = new ViewPlatform(); vpTrans = new TransformGroup(t); vpTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); // Rotator stuff Transform3D yAxis = new Transform3D(); //yAxis.rotY(Math.PI/2); Alpha rotationAlpha = new Alpha( -1, Alpha.INCREASING_ENABLE, 0, 0,4000, 0, 0, 0, 0, 0); RotationInterpolator rotator = new RotationInterpolator( rotationAlpha, vpTrans, yAxis, 0.0f, (float) Math.PI*2.0f); RotationInterpolator rotator2 = new RotationInterpolator( rotationAlpha, vpTrans); BoundingSphere bounds = new BoundingSphere(new Point3d(0.0,0.0,0.0), 1000.0); rotator.setSchedulingBounds(bounds); vpTrans.addChild(rotator); vpTrans.addChild(vp); vpRoot.addChild(vpTrans); view.attachViewPlatform(vp); // Attach the branch graph to the universe, via the // Locale. The scene graph is now live! locale.addBranchGraph(vpRoot); } public void addBranchGraph(BranchGroup bg) { locale.addBranchGraph(bg); } }

java中jtansforms,Java3D中的viewplatform的旋转相关推荐

  1. java string 占位符_驳《阿里「Java开发手册」中的1个bug》?

    前两天写了一篇关于<阿里Java开发手册中的 1 个bug>的文章,评论区有点炸锅了,基本分为两派,支持老王的和质疑老王的. 首先来说,无论是那一方,我都真诚的感谢你们.特别是「二师兄」, ...

  2. word录入表单数据 java 导入系统,java导入excel | 怎么把excel中的数据批量导入到word中的表格中...

    用javascript怎么实现把excel中的数据批量导入到数据库表中 这个js不能直接实现吧 我们程序用到 先读取excel内容转换成数组 然后放到页面上 再提交表单 储存 MySql如何批量添加数 ...

  3. java mod %区别_Java中 % 与Math.floorMod() 区别详解

    %为取余(rem),Math.floorMod()为取模(mod) 取余取模有什么区别呢? 对于整型数a,b来说,取模运算或者取余运算的方法都是: 1.求 整数商: c = a/b; 2.计算模或者余 ...

  4. java中JFrame类中函数addWindowListener(new WindowAdapter)

    在java编写的过程中常常遇到样的一段代码 frame.addWindowListener(new WindowAdapter() {@Override public void windowClosi ...

  5. java string与integer_Java中Integer和String浅谈

    http://qxzxcjq-126-com.iteye.com/blog/883283 Java中的基本数据类型有八种:int.char.boolean.byte.long.double.float ...

  6. maven只打包java目录_ssm项目中maven对resources目录打包的路径_默认路径,自定义路径...

    博客引用处(以下内容在原有博客基础上进行补充或更改,谢谢这些大牛的博客指导): ssm项目打包后mybatis的mapper.xml文件没有放进去 问题出现的原因: ssm项目打包后mybatis的m ...

  7. JAVA坏境变量中的JAVA_HOME path classpath 的设置与作用。

    JAVA坏境变量中的JAVA_HOME path classpath 的设置与作用. 今天再次设置java的环境变量,突然发现每次设置都只是按照步骤一步步将其设置完,并不了解为啥要设置,于是上网找了找 ...

  8. 类的包访问权限:《Java编程思想》中一段话的困惑

    类的包访问权限:<Java编程思想>中一段话的困惑 在<java编程思想第三版>(陈昊鹏 饶若楠等译)的第五章隐藏具体实现中,5.4节的最后一段话是: "正如前面所提 ...

  9. java初学者的书中收获

    Java初学者的书中收获 搜索关于java老师的记忆碎片,第一节课的记忆······其实java比c语言简单许多,也许老师的这句话是对的.可是作为一个初学者,感觉自己因为付出的时间没有在学c语言的时候 ...

最新文章

  1. 关于智能车竞赛,你需要知道什么?
  2. MYSQL触发器记录用户操作的命令
  3. 京东小程序上线,剑指何方?
  4. Interview and paper based test
  5. 浏览器可以用c语言编辑吗,如何在浏览器端运行c/c++语言编写的代码
  6. SVM(1)-概念与理解
  7. lr压测mysql数据库_MySQL数据库性能测试的方法
  8. 基于PHP的网上购物网站设计(含源文件)
  9. msfvenom 生成php木马,利用msfvenom生成木马程序
  10. cisco交换机配置方法
  11. NOI2010:航空管制(拓扑排序 + 思维)
  12. Java HotSpot(TM) 64-Bit Server VM warning: Sharing is only supported for boot loader classes解决办法
  13. 升级Win11必看!!
  14. Codeforces 235C Cyclical Quest
  15. 小米计算机找不到,小米手机投屏找不到设备的情况怎么办?
  16. ASCII转十六进制小工具
  17. 简单服务发现协议SSDP【转】
  18. C#短网址压缩算法与短网址原理入门
  19. SAP中采购计划协议中交货容差测试
  20. DBHelper的封装使用

热门文章

  1. 帝国cms75商城包含电脑端手机端h5微信小程序的界面功能演示
  2. 帝国Cms批量上传多图morepic上传超过最大文件2m的限制的方法
  3. 隔空作画,握拳清屏,这个手部跟踪项目火了,在线可玩
  4. AndroidStudio SSL peer shut down incorrectly
  5. Windows 快速删除 大量文件
  6. iou iof matrix_iof
  7. VS2010-2015对C++11/14/17特性的支持
  8. 树莓派 ubuntu 安装Python+OpenCV
  9. python 数组队列
  10. Make sure the device specification refers to a valid device