Tag: java 3d

Java3d读取3d对象的每个多边形

我正在使用Java3d( VERSION 1.6 ),我试图从任何对象读取所有多边形。 我使用以下代码加载了一个对象: private BranchGroup loadObj(String p) { BranchGroup objRoot = new BranchGroup(); TransformGroup tg = new TransformGroup(); Transform3D t3d = new Transform3D(); t3d.setScale(0.3); Matrix4d matrix = new Matrix4d(); t3d.get(matrix); try { Scene s = null; ObjectFile f = new ObjectFile (); String basepath = new File(p).getAbsolutePath(); System.out.println(basepath); f.setBasePath(basepath); f.setFlags (0); s = […]

Canvas3D没有出现在Swing窗口中

我试图在Swing JPanel中插入一个Canvas3D对象,但代码似乎没有工作(即没有任何反应): Canvas3D canvas = new Canvas3D(SimpleUniverse.getPreferredConfiguration()); SimpleUniverse universe = new SimpleUniverse(canvas); BranchGroup root = new BranchGroup(); root.addChild(new ColorCube()); universe.addBranchGraph(根); universe.getViewingPlatform()setNominalViewingTransform(); canvasPanel.add(帆布); 我错过了什么? JPanel是使用NetBean的Visual Editor创建的。

如何在Java 3D中旋转对象?

我有一个使用以下代码在Java 3D中绘制的Cone: Cone cone = new Cone(2f, 3f); Transform3D t3d = new Transform3D(); TransformGroup coneTransform = new TransformGroup(t3d); coneTransform.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); t3d.setTranslation(new Vector3f(0f,0f,0f); coneTransform.setTransform(t3d); coneTransform.addChild(cone); this.addChild(coneTransform); 假设我的锥体位于点(1,1,1),我希望锥体的尖端指向一条穿过(0,0,0)和(1,1,1)的假想线…如何我可以这样做吗? 这是我一直在尝试的一个例子: Transform3D t3d = new Transform3D(); Vector3f direction = new Vector3f(1,2,1); final double angleX = direction.angle(new Vector3f(1,0,0)); final double angleY = direction.angle(new Vector3f(0,1,0)); final double angleZ = direction.angle(new Vector3f(0,0,1)); t3d.rotX(angleX); […]

有没有办法终止使用java3d的java应用程序,而无需调用System.exit()?

Java3D启动了几个系统线程,并没有在它们上设置isDaemon标志。 当我处置我的应用程序的(仅)JFrame时,它将不会终止,因为这些线程仍在运行。 调用System.exit()似乎是终止应用程序的唯一方法。 (当然,或者从外面杀死它)。 由于我不喜欢调用System.exit(),我尝试了以下(但没有成功): 在VirtualUniverse上调用removeAllLocales():这会终止大多数线程,但仍然有一个(名为J3D-Renderer-1)。 使用reflection获取对javax.media.j3d.MasterControl中的字段ThreadGroup rootThreadGroupp的引用,并在该ThreadGroup上设置isDeamon true。 这似乎没有任何影响。 对名为“Java3D”的ThreadGroup进行引用并对其调用interrupt():这导致java3d线程将InterruptedException写入stderr,但没有别的。 找到Java3d核心库的源代码并提出一个补丁:我在这里找到了一个存储库: https : //github.com/hharrison/java3d-core和这里: https : //java.net/projects/j3d-core/来源 。 后一个看起来是“官方的”,但显示它发生在5年前的最后一次变化,而前者看起来像是一个私人分叉给我。 我接近放弃并调用System.exit(),但我仍然不喜欢它。 你知道更好的方法吗?

是否可以在Nvidia 3D Vision硬件上运行Java3D应用程序?

可以在Nvidia 3D Vision硬件上运行Java3D应用程序吗? 我有一个可以在立体3D中运行的现有Java3D应用程序。 在过去,我总是使用OpenGL渲染器和四缓冲立体声在Quadro卡上运行应用程序。 我现在可以使用nVidia 3D Vision系统(带有GeForce GTX 460M)的笔记本电脑。 从文档中可以看出,如果我使用DirectX绑定并让nVidia驱动程序处理立体声,应该可以在立体声中运行我的应用程序,但是,似乎并非如此。 如果我使用j3d.rend = d3d运行Java3D应用程序,则nVidia 3D Vision API似乎不会将其识别为DirectX应用程序。 如何让nVidia 3D Vision驱动程序检测Java3D应用程序并以立体3D渲染?

如何使用Java3D API在java中绘制简单的3D点(x,y,z)?

我正在使用Java技术在netbeans平台上制作桌面应用程序。 我做了一些图像处理,数据库function,图像捕获过程; 但现在我想在3D视图中绘制图像。 所以,我想首先我必须制作我的.tiff 16位灰度图像的点阵,然后使用这个点阵。 我试了一下,我的代码在下面,但它不起作用。 那么我该如何使用这个点数组在3D视图中绘制我的图像呢? import java.awt.BorderLayout; import com.sun.j3d.utils.universe.*; import java.awt.image.BufferedImage; import javax.media.j3d.*; import javax.media.jai.JAI; import javax.media.jai.PlanarImage; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.vecmath.Color3f; import javax.vecmath.Point3f; public final class HelloJava3Da extends JPanel { PlanarImage plImg3 = JAI.create(“fileload”, “C:\\Users\\Desktop\\myImage.tiff”); BufferedImage histImage = plImg3.getAsBufferedImage(); int s = 0, count = 0; public HelloJava3Da() { […]

在java3d中面部着色

使用java3d,我怎样才能在每个顶点基础上而不是在每个基础上进行着色? 我试着了解java3d但是我生产的Shape3d看起来并不像预期的那样。 我想用不同的颜色着色不同的三角形,但我不知道如何做到这一点。 纹理看起来像是一种矫枉过正,更重要的是,我根本没有掌握这一部分。 据我所见,材料在一个完整的GeometryArray上工作,所以这里没有好处。 每个顶点颜色都不会起作用。

Java3D:在Canvas3D上绘制2D HUD

我正在使用Java3D来渲染三维场景。 我想在3D图像的顶部覆盖二维“抬头显示”。 如何在3dcanvas上高效绘制2D内容? 谢谢!

3d建模加载,更新和在java中呈现

我是java 3d的新手。 我遇到过这样的情况,我想在我的java程序中加载3d工程max或Maya等3d建模软件中开发的任何对象[作为示例鞋]的现成的开发3d模型,更新其纹理或颜色属性等。渲染它,然后将更新的模型显示给最终用户。 所以我问所有的3D专家我应该如何继续前进以实现我的目标? 我应该将哪些输入加载到我的程序中? 如何更新加载的模型,渲染它并向最终用户显示更新的模型? 在简单的故事中,我想让我的用户能够通过他们的交互来修改3D模型,他们提供了3D模型的鞋子,例如默认颜色和纹理和一些领域,如鞋底颜色,如果他们选择颜色红色然后加载3d模特的鞋底是红色(即更新),然后用红色橡胶鞋底鞋而不是默认颜色鞋展示给最终用户。 拜托,建议我完成我的目标。

翻转卡片动画

我正在尝试翻转彩色矩形。 是否可以使用rotateTransition来执行此操作? 我试过以下代码: public void rotateField(){ RotateTransition rt = new RotateTransition(Duration.millis(3000), field[4][4]); rt.setByAngle(360); rt.setCycleCount(1); rt.play(); } 但是,这不会翻转矩形,只是旋转它。 我想实际翻转矩形,就像你翻转一张扑克牌一样。 是否可以使用rotateTransition类?