Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import javax.media.j3d.*;
- import javax.swing.*;
- import java.awt.*;
- import com.sun.j3d.utils.universe.SimpleUniverse;
- import javax.media.j3d.Transform3D;
- import javax.vecmath.Vector3f;
- import com.sun.j3d.utils.geometry.*;
- import javax.vecmath.Color3f;
- import javax.vecmath.Point3d;
- import javax.vecmath.Point3f;
- public class Program3D extends JFrame{
- Program3D(){
- super("Program3D");
- setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- setResizable(false);
- GraphicsConfiguration config =
- SimpleUniverse.getPreferredConfiguration();
- Canvas3D canvas3D = new Canvas3D(config);
- canvas3D.setPreferredSize(new Dimension(800,600));
- add(canvas3D);
- pack();
- setVisible(true);
- BranchGroup scena = utworzScene();
- scena.compile();
- SimpleUniverse simpleU = new SimpleUniverse(canvas3D);
- Transform3D przesuniecie_obserwatora = new Transform3D();
- przesuniecie_obserwatora.set(new Vector3f(0.0f,0.0f,3.0f));
- simpleU.getViewingPlatform().getViewPlatformTransform().setTransform(przesuniecie_obserwatora);
- simpleU.addBranchGraph(scena);
- }
- BranchGroup utworzScene(){
- BranchGroup wezel_scena = new BranchGroup();
- //OBROT
- TransformGroup obrot_animacja = new TransformGroup();
- obrot_animacja.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
- wezel_scena.addChild(obrot_animacja);
- Alpha animacja = new Alpha(-1,5000);
- RotationInterpolator obracacz = new RotationInterpolator(animacja, obrot_animacja);
- BoundingSphere bounds = new BoundingSphere(new Point3d(0.0d,0.0d,0.0d), 10.0d);
- obracacz.setSchedulingBounds(bounds);
- Transform3D temp_rot = new Transform3D();
- temp_rot.rotX(Math.PI/2);
- obracacz.setTransformAxis(temp_rot);
- obrot_animacja.addChild(obracacz);
- //WALEC
- Material material_cylindra = new Material(new Color3f(1.5f, 0.3f,0.2f), new Color3f(0.5f,0.1f,0.1f),
- new Color3f(0.8f, 0.5f, 0.5f), new Color3f(0.2f, 0.1f, 0.2f), 20.0f);
- Appearance wyglad_walca = new Appearance();
- wyglad_walca.setMaterial(material_cylindra);
- Cylinder cylinder = new Cylinder(0.05f, 0.5f, wyglad_walca);
- TransformGroup trans_walca = new TransformGroup();
- Transform3D przesuniecie_walca = new Transform3D();
- Transform3D rot_walca = new Transform3D();
- rot_walca.rotZ(Math.PI/2);
- przesuniecie_walca.mul(rot_walca);
- trans_walca.setTransform(przesuniecie_walca);
- wezel_scena.addChild(trans_walca);
- trans_walca.addChild(cylinder);
- //kulki
- Sphere kulka = new Sphere(0.2f, wyglad_walca);
- TransformGroup trans_kuli = new TransformGroup();
- Transform3D przesuniecie_kuli = new Transform3D();
- przesuniecie_kuli.set(new Vector3f(0.3f,0.4f,0.0f));
- trans_kuli.setTransform(przesuniecie_kuli);
- obrot_animacja.addChild(trans_kuli);
- trans_kuli.addChild(kulka);
- //swiatlo
- Color3f kolor_swiatla_pnkt = new Color3f(0.0f,1.0f,0.0f);
- PointLight swiatlo = new PointLight(kolor_swiatla_pnkt, new Point3f(0f,0f,0.0f), new Point3f(0.1f,0.1f,0.1f));
- Transform3D przesuniecie_swiatla = new Transform3D();
- przesuniecie_swiatla.set(new Vector3f(-0.3f,-0.4f,0.0f));
- swiatlo.setInfluencingBounds(bounds);
- TransformGroup trans_swiatla = new TransformGroup();
- trans_swiatla.setTransform(przesuniecie_swiatla);
- obrot_animacja.addChild(trans_swiatla);
- trans_swiatla.addChild(swiatlo);
- return wezel_scena;
- }
- public static void main(String args[]){
- new Program3D();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement