Statistics
| Revision:

root / trunk / libraries / lib3DMap / src / org / gvsig / gvsig3d / simbology3D / symbol3D / point / ObjectPoint3DSymbol.java @ 23304

History | View | Annotate | Download (2.66 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
import com.sun.java_cup.internal.sym;
23

    
24
public class ObjectPoint3DSymbol extends Abstract3DSymbol {
25

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

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

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

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

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

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

    
79
                return group;
80
        }
81

    
82
}