计算机图形学环境配置java3D

计算机图形学环境配置java3D

  • JDK18(或者一些版本都无法支持Applet类)
  • idea配置
  • 导入java3D的jar包
  • 测试代码:
  • 运行效果:

java3Dwindows64位下载
这个是默认到下图路径中:(记住这个路径,待会要导入jar包)
在这里插入图片描述
选择这个:
在这里插入图片描述

JDK18(或者一些版本都无法支持Applet类)

所以我把jdk改成了这个1.8版本就可以了:
在这里插入图片描述

idea配置

将java3D目录下面的bin目录中的dll文件拷贝到idea里配置的jdk路径的bin目录下:
idea里配置的jdk路径的bin目录:
在这里插入图片描述
把这个文件拷贝过去:
在这里插入图片描述

导入java3D的jar包

打开idea,选取环境,创建项目
右键External Libraries下的环境,打开库设置:

在这里插入图片描述
导入这个路径下的jar包:

C:\Program Files\Java\Java3D\1.5.1\lib\ext

在这里插入图片描述

步骤:
在这里插入图片描述

测试代码:

import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.behaviors.mouse.MouseRotate;
import com.sun.j3d.utils.behaviors.mouse.MouseTranslate;
import com.sun.j3d.utils.behaviors.mouse.MouseZoom;
import com.sun.j3d.utils.geometry.Box;
import com.sun.j3d.utils.geometry.Sphere;
import com.sun.j3d.utils.universe.SimpleUniverse;import javax.media.j3d.*;
import javax.vecmath.Color3f;
import javax.vecmath.Point3d;
import javax.vecmath.Vector3f;
import java.applet.Applet;
import java.awt.*;public class twoprimitivedisplay extends Applet {public twoprimitivedisplay() {//设置显示界面的相关参数setLayout(new BorderLayout());
//创建投影平面Canvas3DGraphicsConfiguration gc = SimpleUniverse.getPreferredConfiguration();Canvas3D c = new Canvas3D(gc);
//将投影平面上的图象显示在显示平面的中间add("Center", c);
//设置SimpleUniverse,由系统选择视点在z轴的正向,观察方向沿z轴反向BranchGroup BranchGroupScene = createBranchGroup();SimpleUniverse u = new SimpleUniverse(c);u.getViewingPlatform().setNominalViewingTransform();
//将BranchGroup:BranchGroupScene加入到SimpleUniverse:u中u.addBranchGraph(BranchGroupScene);}public static void main(String[] args) {//通过MainFrame显示图象new MainFrame(new twoprimitivedisplay(), 300, 300);}public BranchGroup createBranchGroup() {//定义BranchGroupBranchGroup 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(1.f, 1.f, 1.f);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:transformgroupTransformGroup transformgroup = new TransformGroup();
//设置对该TransformGroup的读写能力transformgroup.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);transformgroup.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
//将该TransformGroup加入到BranchGroupRoot中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、tg2*/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(tg1、tg2)加入到总的transformgrouptransformgroup.addChild(tg1);transformgroup.addChild(tg2);
//对BranchGroupRoot预编译BranchGroupRoot.compile();
//通过方法名返回BranchGroupRootreturn BranchGroupRoot;}
}

运行效果:

在这里插入图片描述

参考链接:这位是我的直系学长,十分优秀:java3D安装(idea版)

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

选择 Guava EventBus 还是 Spring Framework ApplicationEvent

文章首发地址 Spring Framework ApplicationEvent Spring Framework 的 ApplicationEvent 是 Spring 框架提供的一种事件机制,用于实现发布和订阅事件的功能。它基于观察者模式,允许应用程序内的组件之间进行松耦合的通信。 下面是关于 Spring Frame…

OJ练习第167题——单词接龙

单词接龙 力扣链接&#xff1a;127. 单词接龙 题目描述 字典 wordList 中从单词 beginWord 和 endWord 的 转换序列 是一个按下述规格形成的序列 beginWord -> s1 -> s2 -> … -> sk&#xff1a; 每一对相邻的单词只差一个字母。 对于 1 < i < k 时&…

C语言实现三字棋

实现以下&#xff1a; 1游戏不退出&#xff0c;继续玩下一把&#xff08;循环&#xff09; 2应用多文件的形式完成 test.c. --测试游戏 game.c -游戏函数的实现 game.h -游戏函数的声明 (2)游戏再走的过程中要进行数据的存储&#xff0c;可以使用3*3的二维数组 char bor…

vue+element使用阿里的图标库保存图标

阿里图标网站iconfont-阿里巴巴矢量图标库 我想使用保存图标&#xff0c;但是element的图标库没有找到可用的&#xff0c;首先在阿里的图标网站搜索保存 发现这个还不错 点击添加入库 点击购物车 点击添加至项目 点击下载到本地 把下载的压缩包里面的文件拖到自己项目里面 在m…

华为三层交换机与路由器对接上网

华为三层交换机与路由器对接上网

高速文件扫描仪:从繁琐到高效的革命性转变

高速文件扫描仪是办公设备中的重要一员&#xff0c;其主要功能是将纸质文件快速转换为数字格式&#xff0c;从而方便存储、传输和管理。那么&#xff0c;这个设备是如何起源并逐步发展起来的呢&#xff1f; 随着信息技术的不断推进&#xff0c;人们对数字化办公的需求变得越来…

私人问答网站搭建指南:Ubuntu+Cpolar+Tipas

文章目录 前言2.Tipask网站搭建2.1 Tipask网站下载和安装2.2 Tipask网页测试2.3 cpolar的安装和注册 3. 本地网页发布3.1 Cpolar临时数据隧道3.2 Cpolar稳定隧道&#xff08;云端设置&#xff09;3.3 Cpolar稳定隧道&#xff08;本地设置&#xff09; 4. 公网访问测试5. 结语 前…

机车整备场数字孪生 | 图扑智慧铁路

机车整备场是铁路运输系统中的重要组成部分&#xff0c;它承担着机车的维修、保养和整备工作&#xff0c;对保障铁路运输的运维和安全起着至关重要的作用。 随着铁路运输的发展、机车技术的不断进步&#xff0c;以及数字化转型的不断推进&#xff0c;数字孪生技术在机车整备场…

在STS里使用Gradle编译Apache POI5.0.0

1、到官方下面地址下载Gradle最新的版本 Gradle Distributions 2、解压后拷贝到D盘下D:\gradle-8.3-rc-4里 3、配置环境变量 新建系统变量 GRADLE_HOME &#xff0c;值为 路径 4、在 Path 中添加上面目录的 bin 文件路径 &#xff08;可以用 %GRADLE_HOME%\bin&#xff0c…

SpingMvc入门

SpingMvc入门 1.MVC Spring的工作流程&#xff1a;2.sping mvc入门3.静态资源处理 前言 Spring MVC是一种基于Java的web应用开发框架&#xff0c;它采用了MVC&#xff08;Model-View-Controller&#xff09;设计模式来帮助开发者组织和管理应用程序的各个组件。 1.MVC Spring的…

海南大学金秋悦读《乡村振兴战略下传统村落文化旅游设计》2023新学年许少辉八一新书​

海南大学金秋悦读《乡村振兴战略下传统村落文化旅游设计》2023新学年许少辉八一新书​

4、Nginx 配置实例-反向代理

文章目录 4、nginx 配置实例-反向代理4.1 反向代理实例一4.1.1 实验代码 4.3 反向代理实例二4.3.1 实验代码 【尚硅谷】尚硅谷Nginx教程由浅入深 志不强者智不达&#xff1b;言不信者行不果。 4、nginx 配置实例-反向代理 4.1 反向代理实例一 实现效果&#xff1a;使用 nginx…

14.Xaml ProgressBar控件 进度条控件

1.运行效果 2.运行源码 a.Xaml源码 <Grid Name="Grid1"><!--Orientation="Horizontal" 进度条的方向 水平的还是垂直的Value="40" 进度的数值Minimum="0" 最小值Maximum

notepad++ 配置 python 以及Anaconda中的python(已解决)

说明&#xff0c;无论是自己的电脑单独安装的python 还是Anaconda虚拟环境安装的python都是一样的。区别就是 独立安装的python 的exe文件路径添加的环境变量了&#xff0c;不需要制定它的路径直接运行下面的命令就可以&#xff0c;而Anaconda中的python.exe的文件夹并没有在虚…

RTSP流媒体服务器EasyNVR安防视频云服务平台如何手动配置Onvif探测功能?

安防监控系统EasyNVR视频云存储平台可实现设备接入、实时直播、录像、检索与回放、视频云存储、视频分发等视频能力服务&#xff0c;可覆盖全终端平台&#xff08;pc、手机、平板等终端&#xff09;&#xff0c;在智慧工厂、智慧工地、智慧社区、智慧校园等场景中有大量落地应用…

2023上半年京东运动鞋服市场数据分析(京东数据运营)

大众线下运动生活恢复&#xff0c;掀起新一轮户外潮流&#xff0c;运动热潮迭起。由此产生的运动鞋服及专业装备需求&#xff0c;为运动品牌们带来了诸多增长机会。近日各大运动品牌陆续发布上半年财报&#xff0c;回答了品牌对复苏机遇、发展挑战的应对情况。接下来结合具体数…

[ 云计算 华为云 ] 解决办法:如何更换华为云云耀云服务器L实例的镜像 | 文末送书

文章目录 问题描述分析原因解决办法文末送书《ANSYS Workbench项目分析与案例实操详解》博主推荐理由本书内容简介本书作者简介 废话在前&#xff08;直接看解决办法的这段可以过&#xff09;&#xff1a;讲道理&#xff0c;一般情况下云服务器&#xff0c;镜像是随便更换的&am…

计算机专业毕业设计项目推荐02-个人医疗系统(Java+原生Js+Mysql)

个人医疗系统&#xff08;Java原生JsMysql&#xff09; **介绍****系统总体开发情况-功能模块****各部分模块实现** 介绍 本系列(后期可能博主会统一为专栏)博文献给即将毕业的计算机专业同学们,因为博主自身本科和硕士也是科班出生,所以也比较了解计算机专业的毕业设计流程以…

《React vs. Vue vs. Angular:2023年的全面比较》

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

linux配置本地yum源

在本地部署服务器时&#xff0c;因为无法联网导致没法使用外网yum源&#xff0c;会对安装服务有些影响。 不过可以通过本地光盘部署yum源赖解决问题。 1.查看一下虚拟机是否有sr0这个文件 ll /dev/sr0 2.创建一个文件做挂载 mkdir /media/cdrom/ mount /dev/sr0 /media/cdrom…