java3d人体模型
Java、Java 3D与计算机几何设计实验
简单的人体队伍模型
1.实验内容:
制作一个简单的人体跳舞排成的三角形队伍模型,通过利用课本第五章的java3D的坐标变换和基本形体来完成该实验。
在这次试验中利用到与坐标变换相关的类有TransformGroup类、Transform3D类的功能与应用,还使用到一些基本的形体如球体、圆柱体、圆锥体的功能参数与编程应用,同时还涉及到了SharedGroup类的功能与应用。
2.实验步骤:
(1)首先,人体的头是用一个半径为0.3的球体来模拟,它所处的坐标为(0.f,1.1f,0.f),也就是球体的圆心处于的坐标点。
人体的双手,同样是用球体模拟,它们的半径都为1.5,分别处的坐标为(0.3f,0.52f,0.f))和(-0.3f,0.52f,0.f)),两个相对称的球体,便模拟为人体的左右手。
人体的身体,就用一个简单的圆锥体代替,它的底面半径为0.4,高为0.8,中心点所在的坐标是(0.f,0.4f,0.f),由圆锥体得高为0.8,加上人体头球体的半径0.3,刚好就是该球体的中心点坐标的y=1.1值,正好将头与身体连接起来。
最后,人体的双腿用两个也是相对称的圆柱体模拟,它们的底面半径为0.08,高为0.5,则为腿长,相应的坐标为(0.15f,-0.25f,0.f)与(-0.15f,-0.25f,0.f)。
(2)通过使用SharedGroup类,将做好的人体模型通过复制,先setTranslation(new Vector3f(0.6f,0.f,0.f))和setTranslation(new Vector3f(-0.6f,0.f,0.f),将人向x坐标方向进行复制,则在x方向上形成了以三人为一组的队伍,再setTranslation (new Vector3f(0.f,0.f,0.6f),在z的正半轴方向上复制一个人体模型,就这样,就完成了整一个实验,完成了一个三角形的类似跳舞的队伍模型。
3.实验代码如下:
import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.*;
import java.awt.GraphicsConfiguration;
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.geometry.*;
import com.sun.j3d.utils.geometry.ColorCube;
import com.sun.j3d.utils.universe.*;
import com.sun.j3d.utils.behaviors.mouse.*;
import com.sun.j3d.utils.geometry.Cone;
import com.sun.j3d.utils.geometry.Cylinder;
import com.sun.j3d.utils.geometry.Sphere;
import javax.media.j3d.*;
import javax.vecmath.*;
import java.awt.event.*;
public class cp extends Applet
{
public BranchGroup createBranchGroupSceneGraph()
{
BranchGroup BrachGroupRoot = 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);
BrachGroupRoot.addChild(bg);
Color3f directionalColor = new Color3f(0.f,1.f,1.f);
Vector3f vec =new Vector3f(-1.f,-1.f,-1.f);
DirectionalLight directionalLight = new DirectionalLight(directionalColor,vec);
directionalLight.setInfluencingBounds(bounds);
BrachGrou