svn-gvsig-desktop / tags / 3D_Animation_v1_0alpha_Build_5 / libraries / lib3DMap / src / org / gvsig / gvsig3d / simbology3D / symbol3D / point / ObjectPoint3DSymbol.java @ 25534
History | View | Annotate | Download (2.44 KB)
1 | 23167 | jcampos | package org.gvsig.gvsig3d.simbology3D.symbol3D.point; |
---|---|---|---|
2 | |||
3 | import java.io.FileNotFoundException; |
||
4 | import java.util.Iterator; |
||
5 | import java.util.List; |
||
6 | |||
7 | import org.gvsig.gvsig3d.simbology3D.symbol3D.Abstract3DSymbol; |
||
8 | import org.gvsig.osgvp.AutoTransform; |
||
9 | import org.gvsig.osgvp.Group; |
||
10 | import org.gvsig.osgvp.Node; |
||
11 | import org.gvsig.osgvp.PositionAttitudeTransform; |
||
12 | import org.gvsig.osgvp.Vec3; |
||
13 | import org.gvsig.osgvp.osgDB; |
||
14 | import org.gvsig.osgvp.exceptions.node.NodeException; |
||
15 | |||
16 | import com.iver.ai2.gvsig3d.legend.Object3DMarkerSymbol; |
||
17 | import com.iver.cit.gvsig.fmap.core.symbols.ISymbol; |
||
18 | |||
19 | 23304 | jcampos | public class ObjectPoint3DSymbol extends Abstract3DSymbol { |
20 | 23167 | jcampos | |
21 | private Object3DMarkerSymbol object3DMarketSymbol;
|
||
22 | 23304 | jcampos | private static Node object3D = null; |
23 | private static String oldPath = ""; |
||
24 | 23167 | jcampos | |
25 | public ObjectPoint3DSymbol(ISymbol symbol) {
|
||
26 | super(symbol);
|
||
27 | object3DMarketSymbol = (Object3DMarkerSymbol) symbol; |
||
28 | } |
||
29 | |||
30 | @Override
|
||
31 | public Node generateSymbol(List<Vec3> position) { |
||
32 | 23304 | jcampos | |
33 | 23167 | jcampos | Group group = new Group(); |
34 | PositionAttitudeTransform posAttTrasn = null;
|
||
35 | Vec3 scale = object3DMarketSymbol.getScale(); |
||
36 | Vec3 rotation = object3DMarketSymbol.getRotationObject(); |
||
37 | try {
|
||
38 | 23304 | jcampos | // Node object3D = osgDB.readNodeFile("D:/modelos3d/cow.ive");
|
39 | if (!(oldPath.equals(object3DMarketSymbol.getObject3DPath()))){
|
||
40 | oldPath = object3DMarketSymbol.getObject3DPath(); |
||
41 | object3D = osgDB.readNodeFile(oldPath); |
||
42 | } |
||
43 | 23167 | jcampos | for (Iterator iterator = position.iterator(); iterator.hasNext();) { |
44 | Vec3 pos = (Vec3) iterator.next(); |
||
45 | 23304 | jcampos | System.err.println("position " + pos.x() + " " + pos.y() + " " |
46 | + pos.z()); |
||
47 | 23167 | jcampos | posAttTrasn = new PositionAttitudeTransform();
|
48 | posAttTrasn.setPosition(pos); |
||
49 | posAttTrasn.setScale(scale); |
||
50 | 23304 | jcampos | |
51 | if (object3DMarketSymbol.isAutoRotate()) {
|
||
52 | AutoTransform autoRotateTrasn = null;
|
||
53 | autoRotateTrasn = new AutoTransform();
|
||
54 | 23167 | jcampos | autoRotateTrasn.setPosition(pos); |
55 | autoRotateTrasn.addChild(posAttTrasn); |
||
56 | 23304 | jcampos | autoRotateTrasn |
57 | .setAutoRotateMode(AutoTransform.AutoRotateMode.ROTATE_TO_CAMERA); |
||
58 | // autoRotateTrasn.setAutoScaleToScreen(true);
|
||
59 | 23167 | jcampos | group.addChild(autoRotateTrasn); |
60 | 23304 | jcampos | } else {
|
61 | 23167 | jcampos | group.addChild(posAttTrasn); |
62 | } |
||
63 | posAttTrasn.addChild(object3D); |
||
64 | 23304 | jcampos | |
65 | 23167 | jcampos | } |
66 | } catch (NodeException e1) {
|
||
67 | // TODO Auto-generated catch block
|
||
68 | e1.printStackTrace(); |
||
69 | } catch (FileNotFoundException e) { |
||
70 | // TODO Auto-generated catch block
|
||
71 | e.printStackTrace(); |
||
72 | } |
||
73 | |||
74 | return group;
|
||
75 | } |
||
76 | |||
77 | } |