最近学习了java3d,并写了作业画一个桌子:

下面为源代码:

import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.GraphicsConfiguration;
import java.io.*;
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.*;
import com.sun.j3d.utils.image.*;
import com.sun.j3d.utils.universe.*;
import javax.media.j3d.*;
import javax.vecmath.*;

public class Desk extends Applet
{
 public BranchGroup createDesk()
 {
  BranchGroup rootGroup=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);
  rootGroup.addChild(bg);
  
  Color3f lightColor=new Color3f(1.0f,1.0f,1.0f);
  Vector3f vec=new Vector3f(0.0f,0.0f,-1.0f);
  DirectionalLight light=new DirectionalLight(lightColor,vec);
  light.setInfluencingBounds(bounds);
  rootGroup.addChild(light);
  
  PointLight pointLight=new PointLight();
  pointLight.setColor(lightColor);
  pointLight.setInfluencingBounds(bounds); 
  pointLight.setPosition(new Point3f(0.5f,0.1f,-0.6f));
  Transform3D tran=new Transform3D();
  tran.setRotation(new Quat4f(0.4f,1.0f,0.0f,1.57f));
  tran.setScale(0.7f);
  tran.setTranslation(new Vector3d(0.0f,0.6f,0.0f));
  TransformGroup transRoot=new TransformGroup(tran);
  transRoot.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
  transRoot.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
  tran=new Transform3D();
  tran.setTranslation(new Vector3d(0.0f,-0.3f,0.0f));
  TransformGroup trans1=new TransformGroup(tran);
  Appearance app=new Appearance();
  Material mat=new Material();
  mat.setDiffuseColor(1.0f,1.0f,0.0f);
  String fileName="1.jpg";
  String strPath=System.getProperty("user.dir")   +   java.io.File.separator+   fileName; ;
  TextureLoader texLoader1 = new TextureLoader( strPath, this);
  app.setTexture(texLoader1.getTexture());
  app.setMaterial(mat);
  Box box=new Box(0.8f,0.05f,0.7f,Box.GENERATE_NORMALS|Box.GENERATE_TEXTURE_COORDS,app);
  trans1.addChild(box);
  transRoot.addChild(trans1);
  transRoot.addChild(pointLight);
  
  tran=new Transform3D();
  tran.setTranslation(new Vector3d(0.3f,-1.0f,-0.3f));
  TransformGroup trans2=new TransformGroup(tran);
  box=new Box(0.1f,0.7f,0.1f,Box.GENERATE_NORMALS|Box.GENERATE_TEXTURE_COORDS,app);
  trans2.addChild(box);
  transRoot.addChild(trans2);
  
  tran=new Transform3D();
  tran.setTranslation(new Vector3d(-0.3f,-1.0f,0.3f));
  TransformGroup trans3=new TransformGroup(tran);
  box=new Box(0.1f,0.7f,0.1f,Box.GENERATE_NORMALS|Box.GENERATE_TEXTURE_COORDS,app);
  trans3.addChild(box);
  transRoot.addChild(trans3);
  
  tran=new Transform3D();
  tran.setTranslation(new Vector3d(0.3f,-1.0f,0.3f));
  TransformGroup trans4=new TransformGroup(tran);
  box=new Box(0.1f,0.7f,0.1f,Box.GENERATE_NORMALS|Box.GENERATE_TEXTURE_COORDS,app);
  trans4.addChild(box);
  transRoot.addChild(trans4);
  
  tran=new Transform3D();
  tran.setTranslation(new Vector3d(-0.3f,-1.0f,-0.3f));
  TransformGroup trans5=new TransformGroup(tran);
  box=new Box(0.1f,0.7f,0.1f,Box.GENERATE_NORMALS|Box.GENERATE_TEXTURE_COORDS,app);
  trans5.addChild(box);
  transRoot.addChild(trans5); 
  rootGroup.addChild(transRoot);
  
     MouseRotate behavior = new MouseRotate();
       behavior.setTransformGroup(transRoot);
     behavior.setSchedulingBounds(bounds);
     rootGroup.addChild(behavior);

MouseZoom behavior2 = new MouseZoom();
       behavior2.setTransformGroup(transRoot);
     behavior2.setSchedulingBounds(bounds);
     rootGroup.addChild(behavior2);

MouseTranslate behavior3 = new MouseTranslate();
       behavior3.setTransformGroup(transRoot);
     behavior3.setSchedulingBounds(bounds);
     rootGroup.addChild(behavior3);
  rootGroup.compile();
  return rootGroup;
 }
 public Desk()
 {
        setLayout(new BorderLayout());
        GraphicsConfiguration gc =
            SimpleUniverse.getPreferredConfiguration();
            Canvas3D c = new Canvas3D(gc);
        add("Center", c);
        BranchGroup scene = createDesk();
        SimpleUniverse u = new SimpleUniverse(c);
        u.getViewingPlatform().setNominalViewingTransform();
        u.addBranchGraph(scene);
 }
 public static void main(String[] strs)
 {
  new MainFrame(new Desk(),600,600);
 }
}

用java3d画桌子相关推荐

  1. Android画桌子椅子的方法面板和画笔(二)

    通过Canvas 和paint进行顶点绘制 原理基本一样,这里就是根据坐标点,然后通过画笔进行画圆画线,画文字,关于文字,刚好在大圆中心位置,获得文字宽高,然后在画文字到时候,更改其坐标就可以了 /* ...

  2. 用MATLAB画桌子,怎样用matlab编写桌子的动态变化图

    匿名用户 1级 2014-09-13 回答 L=120;  %长 D=50;   %宽,圆桌面直径 d=2.5;  %木板宽 hL=L/2; %半长 R=D/2;  %圆桌面半径 y=-R+d/2:d ...

  3. Android中画桌子椅子的几种方法(动态添加座子椅子)(一)

    第一种:自定义View继承ViewGroup实现 自定义viewgroup,通过对xml中的每个控件获取他们的宽高,然后根据三角函数关系进行位置的放置 onMeasure是测量每个子控件的宽高 onL ...

  4. 基于C++OpenGL实现的小桌子图形绘制

    资源下载地址:https://download.csdn.net/download/sheziqiong/85627947 实验目的和要求 在OpenGL编程基础上,通过实现实验内容,掌握OpenGL ...

  5. OpenGL实验(三)桌子的纹理 光照

    由上一篇继续对桌子表现的探索~ 纹理 (显然)有非常多关于纹理的教程,可以任意选择进行了解. 下面贴这个链接是因为它附了代码(没错就那么简单粗暴--) http://blog.163.com/lian ...

  6. OpenGL实验(二三代码整理)桌子

    终于把桌子都搞定了(虽然还是有点丑?)算是把一开始想做的都做了吧 table.h //@author Birdy&C 2017.4.7 #pragma once #define GLUT_DI ...

  7. 【自学Java】桌球游戏-边界检测,桌球碰撞反弹的实现,以及模拟真实运动,小球减速运动

    桌球游戏 此项目是"高淇300集"中的"37分钟零基础制作桌球小游戏"自己的实现与改进,增加了小球的减速运动.减速运动和真实物理模型还有差距,真实情况下小球应该 ...

  8. 图形学实验(2)--OpenGL 入门

    文章目录 图形几何变换及裁剪 图形的几何变换 掌握OpenGL中三维观察.透视投影.正交投影的参数设置. 线段裁剪的Cohen-Sutherland算法 定义裁剪平面对网状球体裁剪 真实感图形绘制 1 ...

  9. 计算机桌子用英语怎么画,如何用AI绘制一个简单的办公桌?

    小编:hello!好久不见,@菜菜给大家带来的是一篇如何利用简单的几何图形去绘制我们的办公桌,教程写的比较详细,很容易上手,赶快动起来吧,大家不要忘记交作业! 原图: 提示:文章中所有的描边都是内描边 ...

最新文章

  1. 跳出数据计算拯救人智能
  2. 在外壳中获取程序执行时间
  3. python程序如何循环_在Python的一段程序中如何使用多次事件循环详解
  4. JMF调用摄像头粉屏的问题(win10 64位系统)
  5. 余额宝上线新功能,可以跟亲朋好友一起攒钱了
  6. vsftpd增加和删除用户的shell脚本
  7. Instgram和color,谁会更成功?
  8. Odin插件与基于元数据的编辑器实现
  9. 2016年电子制作5000经典案例
  10. 免费福利 Unity3D 项目资源分享链接(消消乐、斗地主、AR等)
  11. 学术论文写作 | (7)NLP学术论文写作方法和技巧
  12. 笔记本电脑开机没画面/黑屏没反应怎么办?
  13. win10一直卡在欢迎界面进不去怎么办
  14. Android发送接收短信的代码示例
  15. android 游戏语言设置在哪里设置中文版,使命召唤手游语言变更方法 怎么设置中文...
  16. 详解 atoi 函数并模拟实现
  17. 【Fiddler】如何使用Fiddler中的Fiddler插件下载钉钉直播回放
  18. 新新人类,异变的开始
  19. 这样的成品app直播源码到手一定会后悔
  20. 机器学习西瓜书学习——绪论

热门文章

  1. 前端的存储技术cookie、sessionStorage、localStorage
  2. To install it, you can run: npm install --save element-ui/lib/theme-chalk/index.css
  3. 数据分析 --- 可视化图表
  4. 以中银E路通小程序为例10分钟带你学会微信小程序的反编译
  5. 《惢客创业日记》2019.10.05(周六)九月份的工作总结
  6. Linux系统调用的原子性
  7. 正弦信号加多普勒matlab,基于Matlab测速仪设计(多普勒效应回波信号处理).doc
  8. 数据可视化分析教学课件——FineBI实验册节选====校园一卡通消费分析
  9. arcgis图层数据查询
  10. 华为一碰传nfc_一碰就传 Huawei Share 3.0体验:超方便