java中jtansforms,Java3D中的viewplatform的旋转
我刚刚开始使用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的旋转相关推荐
- java string 占位符_驳《阿里「Java开发手册」中的1个bug》?
前两天写了一篇关于<阿里Java开发手册中的 1 个bug>的文章,评论区有点炸锅了,基本分为两派,支持老王的和质疑老王的. 首先来说,无论是那一方,我都真诚的感谢你们.特别是「二师兄」, ...
- word录入表单数据 java 导入系统,java导入excel | 怎么把excel中的数据批量导入到word中的表格中...
用javascript怎么实现把excel中的数据批量导入到数据库表中 这个js不能直接实现吧 我们程序用到 先读取excel内容转换成数组 然后放到页面上 再提交表单 储存 MySql如何批量添加数 ...
- java mod %区别_Java中 % 与Math.floorMod() 区别详解
%为取余(rem),Math.floorMod()为取模(mod) 取余取模有什么区别呢? 对于整型数a,b来说,取模运算或者取余运算的方法都是: 1.求 整数商: c = a/b; 2.计算模或者余 ...
- java中JFrame类中函数addWindowListener(new WindowAdapter)
在java编写的过程中常常遇到样的一段代码 frame.addWindowListener(new WindowAdapter() {@Override public void windowClosi ...
- java string与integer_Java中Integer和String浅谈
http://qxzxcjq-126-com.iteye.com/blog/883283 Java中的基本数据类型有八种:int.char.boolean.byte.long.double.float ...
- maven只打包java目录_ssm项目中maven对resources目录打包的路径_默认路径,自定义路径...
博客引用处(以下内容在原有博客基础上进行补充或更改,谢谢这些大牛的博客指导): ssm项目打包后mybatis的mapper.xml文件没有放进去 问题出现的原因: ssm项目打包后mybatis的m ...
- JAVA坏境变量中的JAVA_HOME path classpath 的设置与作用。
JAVA坏境变量中的JAVA_HOME path classpath 的设置与作用. 今天再次设置java的环境变量,突然发现每次设置都只是按照步骤一步步将其设置完,并不了解为啥要设置,于是上网找了找 ...
- 类的包访问权限:《Java编程思想》中一段话的困惑
类的包访问权限:<Java编程思想>中一段话的困惑 在<java编程思想第三版>(陈昊鹏 饶若楠等译)的第五章隐藏具体实现中,5.4节的最后一段话是: "正如前面所提 ...
- java初学者的书中收获
Java初学者的书中收获 搜索关于java老师的记忆碎片,第一节课的记忆······其实java比c语言简单许多,也许老师的这句话是对的.可是作为一个初学者,感觉自己因为付出的时间没有在学c语言的时候 ...
最新文章
- 关于智能车竞赛,你需要知道什么?
- MYSQL触发器记录用户操作的命令
- 京东小程序上线,剑指何方?
- Interview and paper based test
- 浏览器可以用c语言编辑吗,如何在浏览器端运行c/c++语言编写的代码
- SVM(1)-概念与理解
- lr压测mysql数据库_MySQL数据库性能测试的方法
- 基于PHP的网上购物网站设计(含源文件)
- msfvenom 生成php木马,利用msfvenom生成木马程序
- cisco交换机配置方法
- NOI2010:航空管制(拓扑排序 + 思维)
- Java HotSpot(TM) 64-Bit Server VM warning: Sharing is only supported for boot loader classes解决办法
- 升级Win11必看!!
- Codeforces 235C Cyclical Quest
- 小米计算机找不到,小米手机投屏找不到设备的情况怎么办?
- ASCII转十六进制小工具
- 简单服务发现协议SSDP【转】
- C#短网址压缩算法与短网址原理入门
- SAP中采购计划协议中交货容差测试
- DBHelper的封装使用
热门文章
- 帝国cms75商城包含电脑端手机端h5微信小程序的界面功能演示
- 帝国Cms批量上传多图morepic上传超过最大文件2m的限制的方法
- 隔空作画,握拳清屏,这个手部跟踪项目火了,在线可玩
- AndroidStudio SSL peer shut down incorrectly
- Windows 快速删除 大量文件
- iou iof matrix_iof
- VS2010-2015对C++11/14/17特性的支持
- 树莓派 ubuntu 安装Python+OpenCV
- python 数组队列
- Make sure the device specification refers to a valid device