Statistics
| Revision:

svn-gvsig-desktop / tags / 3D_Animation_v1_0alpha_Build_5 / libraries / lib3DMap / src / org / gvsig / gvsig3d / simbology3D / symbol3D / point / ObjectPoint3DSymbol.java @ 25533

History | View | Annotate | Download (2.62 KB)

1
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.gui.FeatureFactory;
8
import org.gvsig.gvsig3d.simbology3D.symbol3D.Abstract3DSymbol;
9
import org.gvsig.osgvp.AutoTransform;
10
import org.gvsig.osgvp.Group;
11
import org.gvsig.osgvp.Node;
12
import org.gvsig.osgvp.PositionAttitudeTransform;
13
import org.gvsig.osgvp.Vec3;
14
import org.gvsig.osgvp.Vec4;
15
import org.gvsig.osgvp.osgDB;
16
import org.gvsig.osgvp.AutoTransform.AutoRotateMode;
17
import org.gvsig.osgvp.exceptions.node.NodeException;
18
import org.gvsig.symbology.fmap.symbols.PictureMarkerSymbol;
19

    
20
import com.iver.ai2.gvsig3d.legend.Object3DMarkerSymbol;
21
import com.iver.cit.gvsig.fmap.core.symbols.ISymbol;
22

    
23
public class ObjectPoint3DSymbol extends Abstract3DSymbol {
24

    
25
        private Object3DMarkerSymbol object3DMarketSymbol;
26
        private static Node object3D = null;
27
        private static String oldPath = "";
28

    
29
        public ObjectPoint3DSymbol(ISymbol symbol) {
30
                super(symbol);
31
                object3DMarketSymbol = (Object3DMarkerSymbol) symbol;
32
        }
33

    
34
        @Override
35
        public Node generateSymbol(List<Vec3> position) {
36

    
37
                Group group = new Group();
38
                PositionAttitudeTransform posAttTrasn = null;
39
                Vec3 scale = object3DMarketSymbol.getScale();
40
                Vec3 rotation = object3DMarketSymbol.getRotationObject();
41
                try {
42
                        // Node object3D = osgDB.readNodeFile("D:/modelos3d/cow.ive");
43
                        if (!(oldPath.equals(object3DMarketSymbol.getObject3DPath()))){
44
                                oldPath = object3DMarketSymbol.getObject3DPath();
45
                                object3D = osgDB.readNodeFile(oldPath);
46
                        }
47
                        for (Iterator iterator = position.iterator(); iterator.hasNext();) {
48
                                Vec3 pos = (Vec3) iterator.next();
49
                                System.err.println("position " + pos.x() + " " + pos.y() + " "
50
                                                + pos.z());
51
                                posAttTrasn = new PositionAttitudeTransform();
52
                                posAttTrasn.setPosition(pos);
53
                                posAttTrasn.setScale(scale);
54

    
55
                                if (object3DMarketSymbol.isAutoRotate()) {
56
                                        AutoTransform autoRotateTrasn = null;
57
                                        autoRotateTrasn = new AutoTransform();
58
                                        autoRotateTrasn.setPosition(pos);
59
                                        autoRotateTrasn.addChild(posAttTrasn);
60
                                        autoRotateTrasn
61
                                                        .setAutoRotateMode(AutoTransform.AutoRotateMode.ROTATE_TO_CAMERA);
62
                                        // autoRotateTrasn.setAutoScaleToScreen(true);
63
                                        group.addChild(autoRotateTrasn);
64
                                } else {
65
                                        group.addChild(posAttTrasn);
66
                                }
67
                                posAttTrasn.addChild(object3D);
68

    
69
                        }
70
                } catch (NodeException e1) {
71
                        // TODO Auto-generated catch block
72
                        e1.printStackTrace();
73
                } catch (FileNotFoundException e) {
74
                        // TODO Auto-generated catch block
75
                        e.printStackTrace();
76
                }
77

    
78
                return group;
79
        }
80

    
81
}