• Idea新建项目配置Java3D 环境配置


    (一)JDK配置

    安装包的下载:1.可以去官网:JDK下载,进入官网页面Java Downloads | Oracle,然后点击Download Java。2.搜博客,可能会内含安装包链接。

    2.在这个界面可以选择我们要安装的版本

    4.  双击后面蓝色字体即可下载;这时,会弹出一个页面

    5. 接下来会跳转到登录页面,有账号可以直接登录,没有的话可以先注册  ,有就正常下载。

    6.下载好了安装包后,双击进入安装向导

    7.系统默认路径在C盘,点击这里选择更改安装路径,建议不用改,以后好找。

    8.然后点击下一步,直到安装成功

    9.安装 jre,可以更改 jre 安装路径(过程同上述安装目录的选择) **注意:如果提示需要将 jre 安装在一个空目录下,那自己创建一个目录即可**

    10.点击下一步,直至安装成功。

    11.配置环境变量(win11为例)

    12. 

    3. idea的安装
    idea 点击下载
    下载community版本即可,如有激活码或其它途径可下载ultimate版本

    以上三样安装安装好之后,即可打开idea进行配置


     

    (二)下载、安装 java3D 

    1.Java 3D 1.5.1的下载与安装
     
            根据自己的系统选取,例如本人用的是windows,则选java3d-1-5-1-windows-amd64.exe(代表64位)这里注意一点,JDK和Java3D的位数需相同,例如JDK用的64位,Java3D库也需64位。

    下载完成后,默认安装即可。

    (三)配置Ideal

    1.配置dll

    将java3D里bin目录下的【j3dcore-ogl.dll】复制到jdk的bin目录下,

    2.项目中添加java3d的jar包

            在IDEA上点击 File——Project Structure——Modules——Dependencies——点击右侧的+号——Library…——New Library——Java——索引到:C:\Program Files\Java\Java3D\1.5.1\lib\ext下,键盘按住Ctrl选择这3个jar包——点击Ok, 会提示修改名字,我这里改为 ext——勾选 在上面新添加的 java3d 依赖名 ext——点击OK——勾选添加 刚刚创建的java3D ——然后点击OK——完工

    (四)运行代码

    1. import java.applet.Applet;
    2. import java.awt.*;
    3. import com.sun.j3d.utils.applet.MainFrame;
    4. import com.sun.j3d.utils.geometry.*;
    5. import com.sun.j3d.utils.universe.*;
    6. import com.sun.j3d.utils.behaviors.mouse.*;
    7. import javafx.scene.transform.Transform;
    8. import javax.media.j3d.*;
    9. import javax.vecmath.*;
    10. /**
    11. * Simple Java 3D example program to display a spinning cube.
    12. */
    13. public class twoprimitivedisplay extends Applet {
    14. public BranchGroup createBranchGraph() {
    15. BranchGroup BranchGroupRoot=new BranchGroup();
    16. BoundingSphere bounds = new BoundingSphere(new Point3d(0.0, 0.0, 0.0), 100.0);
    17. //定义背景颜色
    18. Color3f bgColor = new Color3f(1.0f, 1.0f, 1.0f);
    19. Background bg = new Background(bgColor);
    20. bg.setApplicationBounds(bounds);
    21. BranchGroupRoot.addChild(bg);
    22. //定义平行光、颜色、照射方向与作用
    23. Color3f directionalColor = new Color3f(2.f, 1.f, 1.f);//2-1
    24. Vector3f vec = new Vector3f(-1.f, -1.f, -1.0f);
    25. DirectionalLight directionalLight = new DirectionalLight(directionalColor, vec);
    26. directionalLight.setInfluencingBounds(bounds);
    27. BranchGroupRoot.addChild(directionalLight);
    28. Appearance app1 = new Appearance();
    29. Material material1 = new Material();
    30. material1.setDiffuseColor(new Color3f(1.0f, .0f, 0.0f));
    31. app1.setMaterial(material1);
    32. Appearance app2 = new Appearance();
    33. Material material2 = new Material();
    34. material2.setDiffuseColor(new Color3f(.0f, 1.0f, 0.0f));
    35. app2.setMaterial(material2);
    36. TransformGroup transformgroup = new TransformGroup();
    37. transformgroup.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);//读坐标值
    38. transformgroup.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
    39. BranchGroupRoot.addChild(transformgroup);
    40. MouseRotate mouserotate = new MouseRotate();
    41. mouserotate.setTransformGroup(transformgroup);
    42. BranchGroupRoot.addChild(mouserotate);
    43. mouserotate.setSchedulingBounds(bounds);
    44. MouseZoom mousezoom = new MouseZoom();
    45. mousezoom.setTransformGroup(transformgroup);
    46. BranchGroupRoot.addChild(mousezoom);
    47. mousezoom.setSchedulingBounds(bounds);
    48. MouseTranslate mousetranslate = new MouseTranslate();
    49. mousetranslate.setTransformGroup(transformgroup);
    50. BranchGroupRoot.addChild(mousetranslate);
    51. mousetranslate.setSchedulingBounds(bounds);
    52. TransformGroup tg1 = new TransformGroup();
    53. tg1.addChild(new Sphere(0.4f,app1));
    54. Transform3D t = new Transform3D();
    55. t.setTranslation(new Vector3f(0.f, -0.425f, 0.f));
    56. TransformGroup tg2 = new TransformGroup(t);
    57. tg2.addChild(new Box(0.5f, 0.05f,0.5f, app2));
    58. transformgroup.addChild(tg1);
    59. transformgroup.addChild(tg2);
    60. BranchGroupRoot.compile();
    61. return BranchGroupRoot;
    62. }
    63. public twoprimitivedisplay() {
    64. setLayout(new BorderLayout());
    65. GraphicsConfiguration gc = SimpleUniverse.getPreferredConfiguration();
    66. Canvas3D c = new Canvas3D(gc);
    67. add("Center", c);
    68. BranchGroup BranchGroupScene = createBranchGraph();
    69. SimpleUniverse u = new SimpleUniverse(c);
    70. u.getViewingPlatform().setNominalViewingTransform();
    71. u.addBranchGraph(BranchGroupScene);
    72. }
    73. public static void main(String[] args) {
    74. new MainFrame(new twoprimitivedisplay(), 300, 300);
    75. }
    76. }

    (五)效果展示

  • 相关阅读:
    antd 表单校验问题记录&解决方案
    在linux系统中安装nginx
    【C++】智能指针
    git使用笔记
    Postgresql源码(59)事务ID取值和判断规律总结
    挑战Typescript项目中的strict编译模式
    什么,这年头还有人不知道404
    数据结构——线性表之顺序表
    【精选】2023网络安全学习路线 非常详细 推荐学习
    什么是http无状态?怎么解决的?
  • 原文地址:https://blog.csdn.net/qq_63976098/article/details/132836518