Ahoj, potřeboval bych poradit se zmenšením a posunem objektu po jeho
načtení z 3ds souboru. Používám následující kód:
Děkuji David
import java.awt.*;
import javax.swing.*;
import java.awt.BorderLayout;
import java.awt.GraphicsConfiguration;
import com.sun.j3d.utils.universe.*;
import javax.media.j3d.*;
import com.mnstarfire.loaders3d.Inspector3DS;
import javax.vecmath.Point3d;
public class Frame1
extends JFrame {
JPanel contentPane;
BorderLayout borderLayout1 = new BorderLayout();
public Frame1() {
try {
setDefaultCloseOperation(EXIT_ON_CLOSE);
jbInit();
// ZAVOLAT VLASTNÍ VYTVOŘENÍ 3D SCENE CONTENTPANE !!!
Init();
// NEVOLAT TENTO CONSTRUKTOR !!!
// setLayout(new BorderLayout());
}
catch (Exception exception) {
exception.printStackTrace();
}
}
public void Init(){
GraphicsConfiguration config =
SimpleUniverse.getPreferredConfiguration();
Canvas3D canvas3D = new Canvas3D(config);
// add("Center", canvas3D); NAHRADIT VLASTNÍM getContentPane().add
("Center", canvas3D); !!!
getContentPane().add("Center", canvas3D);
BranchGroup scene = createSceneGraph();
scene.compile();
SimpleUniverse simpleU = new SimpleUniverse(canvas3D);
simpleU.getViewingPlatform().setNominalViewingTransform();
simpleU.addBranchGraph(scene);
}
public BranchGroup createSceneGraph() {
BranchGroup objRoot = new BranchGroup();
Transform3D rotate = new Transform3D();
Transform3D tempRotate = new Transform3D();
rotate.rotX(Math.PI/4.0d);
tempRotate.rotY(Math.PI/5.0d);
rotate.mul(tempRotate);
TransformGroup objRotate = new TransformGroup(rotate);
TransformGroup objSpin = new TransformGroup();
objSpin.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
Transform3D t3d = new Transform3D();
t3d.setScale(0.2);
objSpin.setTransform(t3d);
objRoot.addChild(objSpin1);
objRoot.addChild(objRotate);
objRotate.addChild(objSpin);
Inspector3DS loader = new Inspector3DS("mb.3ds"); // constructor
loader.parseIt(); // process the file
TransformGroup theModel = loader.getModel(); // načíst model jako
children
objSpin.addChild(theModel); // model je moc velký a proto ho nevidím
TADY S TÍM POTŘEBUJI PORADIT >>>>>> DĚKUJI
Transform3D yAxis = new Transform3D();
Alpha rotationAlpha = new Alpha(-1, 4000);
RotationInterpolator rotator =
new RotationInterpolator(rotationAlpha, objSpin, yAxis,
0.0f, (float) Math.PI*2.0f);
BoundingSphere bounds =
new BoundingSphere(new Point3d(0.0,0.0,0.0), 100.0);
rotator.setSchedulingBounds(bounds);
objRoot.addChild(rotator);
return objRoot;
}
private void jbInit() throws Exception {
// NAHRADIT VLASTNÍM 3D SCENE CONTENTPANE !!!
//contentPane = (JPanel) getContentPane();
//contentPane.setLayout(borderLayout1);
setSize(new Dimension(400, 400));
setTitle("Frame Title");
}
}