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

news2024/11/24 20:50:21

(一)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——完工

 

(四)运行代码


import java.applet.Applet;
import java.awt.*;
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.geometry.*;
import com.sun.j3d.utils.universe.*;
import com.sun.j3d.utils.behaviors.mouse.*;
import javafx.scene.transform.Transform;

import javax.media.j3d.*;
import javax.vecmath.*;



/**
 * Simple Java 3D example program to display a spinning cube.
 */
public class twoprimitivedisplay extends Applet {

    public BranchGroup createBranchGraph() {

        BranchGroup BranchGroupRoot=new BranchGroup();
        BoundingSphere bounds = new BoundingSphere(new Point3d(0.0, 0.0, 0.0), 100.0);
        //定义背景颜色
        Color3f bgColor = new Color3f(1.0f, 1.0f, 1.0f);
        Background bg = new Background(bgColor);
        bg.setApplicationBounds(bounds);
        BranchGroupRoot.addChild(bg);
        //定义平行光、颜色、照射方向与作用
        Color3f directionalColor = new Color3f(2.f, 1.f, 1.f);//2-1
        Vector3f vec = new Vector3f(-1.f, -1.f, -1.0f);
        DirectionalLight directionalLight = new DirectionalLight(directionalColor, vec);
        directionalLight.setInfluencingBounds(bounds);
        BranchGroupRoot.addChild(directionalLight);
        Appearance app1 = new Appearance();
        Material material1 = new Material();
        material1.setDiffuseColor(new Color3f(1.0f, .0f, 0.0f));
        app1.setMaterial(material1);
        Appearance app2 = new Appearance();
        Material material2 = new Material();
        material2.setDiffuseColor(new Color3f(.0f, 1.0f, 0.0f));
        app2.setMaterial(material2);
        TransformGroup transformgroup = new TransformGroup();
        transformgroup.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);//读坐标值
        transformgroup.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
        BranchGroupRoot.addChild(transformgroup);
        MouseRotate mouserotate = new MouseRotate();
        mouserotate.setTransformGroup(transformgroup);
        BranchGroupRoot.addChild(mouserotate);
        mouserotate.setSchedulingBounds(bounds);
        MouseZoom mousezoom = new MouseZoom();
        mousezoom.setTransformGroup(transformgroup);
        BranchGroupRoot.addChild(mousezoom);
        mousezoom.setSchedulingBounds(bounds);
        MouseTranslate mousetranslate = new MouseTranslate();
        mousetranslate.setTransformGroup(transformgroup);
        BranchGroupRoot.addChild(mousetranslate);
        mousetranslate.setSchedulingBounds(bounds);
        TransformGroup tg1 = new TransformGroup();
        tg1.addChild(new Sphere(0.4f,app1));
        Transform3D t = new Transform3D();
        t.setTranslation(new Vector3f(0.f, -0.425f, 0.f));
        TransformGroup tg2 = new TransformGroup(t);
        tg2.addChild(new Box(0.5f, 0.05f,0.5f, app2));
        transformgroup.addChild(tg1);
        transformgroup.addChild(tg2);
        BranchGroupRoot.compile();
        return BranchGroupRoot;
    }
    public twoprimitivedisplay() {
        setLayout(new BorderLayout());
        GraphicsConfiguration gc = SimpleUniverse.getPreferredConfiguration();
        Canvas3D c = new Canvas3D(gc);
        add("Center", c);
        BranchGroup BranchGroupScene = createBranchGraph();
        SimpleUniverse u = new SimpleUniverse(c);
        u.getViewingPlatform().setNominalViewingTransform();
        u.addBranchGraph(BranchGroupScene);
    }
    public static void main(String[] args) {
        new MainFrame(new twoprimitivedisplay(), 300, 300);
    }

}

(五)效果展示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1022714.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IEEE802.2之LLC(逻辑链路控制)

一、概念 IEEE 802.2 是一种用于局域网(LAN)和都会区域网(MAN)的数据链路层逻辑链路控制(LLC)的标准。它是 IEEE 802 系列标准中的一个组成部分,专门用于定义如何在数据链路层内进行帧的多路复用…

按摩软件仿东郊到家系统开发,上门预约系统;

按摩软件仿东郊到家系统开发,上门预约系统; 用户端、技师端、商家端,以及管理后台。上门预约的操作 1、技师管理。 技师满意度进行统一跟踪评估,进行分级管理,分级评估; 2、订单管理。 按订单状态分类筛选&…

Vue3动态显示时间

使用的是moment.js插件 关键字 vue3的 onMounted 和 onBeforeUnmount 声明周期 一个用来创建 一个用来销毁 创建什么呢? setInterval 函数 销毁时使用时 clearInterval清除定时器 1上代码 function formatTime() {const date moment();const year date.year();const m…

【STM32】SDIO—SD 卡读写01

基于stm32f103 基于零死角玩转STM32—F103指南者 简介 1.SD 卡总共有 8 个寄存器,用于设定或表示 SD 卡信息。 2.SD卡的寄存器不能像STM32那样访问,而是利用命令访问,SDIO 定义了 64 个命令。SD 卡接收到命令后,根据命令要求对…

今天的消费情况

1、今天消费1710元 意外险 住院--集中参保 校---******----服 1220 rmB lunch 240Rmb

若依前端使用

初始化页面时,路由上加参数 多个菜单对应一个页面,默认查询的数据状态不一样 vue 页面上 通过 debugger; 查看所有的参数, 最后取到了

【Android知识笔记】FrameWork中的设计模式

一、FrameWork中有哪些设计巧妙之处 例如: Binder调用,模糊进程边界: 屏蔽跨进程IPC通信的细节,让开发者把精力放在业务上面,无需关心进程之间的通信。Bitmap大图传输,高性能: 只传递Binder句柄,到目标进程后做内存映射,不用做大量数据拷贝,速度非常快。Zygote创建进…

想要定制一个自己的ChatGPT?三步就可以搞定!

2022年底ChatGPT上线,短短两个月用户就超过一亿,成为了人工智能界当之无愧的超级大网红。ChatGPT凭借着自身强大的拟人化及时应答能力迅速破圈,引起了各行各业的热烈讨论。简单来说ChatGPT就是可以基于用户文本输入自动生成回答的AI聊天机器人…

数据结构——KD树

KD树(K-Dimensional Tree)是一种用于多维空间的二叉树数据结构,旨在提供高效的数据检索。KD树在空间搜索和最近邻搜索等问题中特别有用,允许在高维空间中有效地搜索数据点。 重要性质 1.分割K维数据空间的数据结构 2.是一颗二叉树…

中期科技:智慧公厕是智慧城市管理智慧化的至佳表现

智慧公厕,作为智慧城市建设的一部分,正逐渐成为城市管理的新标杆。它不仅为城市居民提供便利,还深刻地改善了城市管理的效率。如中期科技「智慧公厕-智慧厕所」通过运用先进的科技手段,智慧公厕在优化城市管理、提升城市服务、促进…

电巢科技出席第26届西北地区电子技术与线路课程教学改革研讨会,聚焦一流课程建设!

2023年9月15日至17日,北方民族大学召开第26届西北地区电子技术与线路课程教学改革研讨会。本次会议围绕“梳理课程教学内容,改革教学方式,探索虚拟教研室构建方式,完善基层教学组织,推进一流课程和一流教材资源共享&am…

ip地址与网络上的其他地址有冲突吗?

ip地址相当于是计算机的号码。ip地址与网络上的其他ip地址有冲突是局域网ARP病毒攻击导致的。 ARP,即地址解析协议,实现通过IP地址得知其物理地址。 arp协议是TCP/IP协议组的一个协议,用于进行把网络地址翻译成物理地址(又称MAC地址)。arp病毒…

密码学【对称加密-DES\AES】

前言 在密码学中,加密算法分为双向加密和单向加密。单向加密包括MD5、SHA等摘要算法,它们是不可逆的。双向加密包括对称加密和非对称加密,对称加密包括AES加密、DES加密等。双向加密是可逆的,存在密文的密钥。AES算法是DES算法的替…

7.1、如何理解Flink中的时间语义

目录 1、如何理解Flink中的时间语义 2、实时计算时,应该如何选择时间语义? 3、时间语义与窗口的关系 1、如何理解Flink中的时间语义 flink作为流式计算引擎,提供了 两种时间语义 来对流式数据进行计算 事件时间(EventTime) : 事件产生的…

【架构篇】Supabase架构和功能介绍

Supabase是什么 Supabase将自己定位为Firebase的开源替代品,提供了一套工具来帮助开发者构建web或移动应用程序。Supabase是建立在Postgres之上的,Postgres是一个免费的开源数据库,被认为是世界上最稳定、最先进的数据库之一。Supabase对标F…

ValueError: Index contains duplicate entries,cannot reshape

项目场景: python-dataframe 在对行转列的时候出现 ValueError: Index contains duplicate entries,cannot reshape 问题描述 dataframe官方文档 # 为什么报错 是因为 index 和 columns 有重复值 df df.drop_duplicates(subset[foo,bar],keepfrist) df.pivot(i…

web vr3d可视化编辑工具推动VR教育应用落地和发展

VR编辑器可广泛的应用于教育教学、城市规划、室内设计、工业仿真、古迹复原、桥梁道路设计、军事模拟等行业。该软件适用性强、操作简单、功能强大、高度可视化、所见即所得,他的出现将给正在发展的VR产业注入新的活力。 作为企业级VR应用的一款重要工具&#xff0c…

vue模板语法上集->插值,指令,过滤器,计算属性监听属性,vue购物车

插值指令过滤器计算属性&监听属性vue购物车 1.插值 <!DOCTYPE html> <html><head><meta charset"utf-8"><script src"https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.js"></script><script src&quo…

视频汇聚/视频云存储/视频监控管理平台EasyCVR录像存储功能如何优化?具体步骤是什么?

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同&#xff0c;支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。视频监控系统EasyCVR拓展性强&#xff0c;视频能力丰富&#xff0c;具体可实现视频监控直播、视频轮播、视频录像、云存储、…

股指期权交割日大盘必跌吗?

股指期权交割日大盘必跌没有这一说法&#xff0c;股指期货的价格涨跌和交割日并无太大关系&#xff0c;临近交割日以后&#xff0c;股指价格和大盘趋于一致&#xff0c;如果价格相同的话&#xff0c;不存在下跌的可能性&#xff0c;下文揭秘股指期权交割日大盘必跌吗&#xff1…