GrxTransformItem.java
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2008, AIST, the University of Tokyo and General Robotix Inc.
3  * All rights reserved. This program is made available under the terms of the
4  * Eclipse Public License v1.0 which accompanies this distribution, and is
5  * available at http://www.eclipse.org/legal/epl-v10.html
6  * Contributors:
7  * General Robotix Inc.
8  * National Institute of Advanced Industrial Science and Technology (AIST)
9  */
10 
11 
12 package com.generalrobotix.ui.item;
13 
14 import java.util.List;
15 import java.util.Vector;
16 
17 import org.eclipse.jface.dialogs.MessageDialog;
18 
19 import javax.media.j3d.BadTransformException;
20 import javax.media.j3d.BranchGroup;
21 import javax.media.j3d.Geometry;
22 import javax.media.j3d.QuadArray;
23 import javax.media.j3d.Shape3D;
24 import javax.media.j3d.Switch;
25 import javax.media.j3d.Transform3D;
26 import javax.media.j3d.TransformGroup;
28 
29 import javax.vecmath.Color3f;
30 import javax.vecmath.Matrix3d;
31 import javax.vecmath.Matrix4d;
32 import javax.vecmath.Point3f;
33 import javax.vecmath.Vector3d;
34 
35 import jp.go.aist.hrp.simulator.ModelLoader;
36 import jp.go.aist.hrp.simulator.ModelLoaderHelper;
37 import jp.go.aist.hrp.simulator.ModelLoaderPackage.ModelLoaderException;
38 import jp.go.aist.hrp.simulator.SceneInfo;
39 import jp.go.aist.hrp.simulator.ShapePrimitiveType;
40 
48 
52 @SuppressWarnings("serial")
53 public class GrxTransformItem extends GrxBaseItem {
54  public TransformGroup tg_;
55  public BranchGroup bg_;
56 
58  public Vector<GrxTransformItem> children_;
59 
60  private Switch switchAxes_;
61  private Switch switchBb_;
62  protected GrxModelItem model_;
63 
69  public GrxTransformItem(String name, GrxPluginManager manager, GrxModelItem model) {
70  super(name, manager);
71  model_ = model;
72 
73  tg_ = new TransformGroup();
74  tg_.setCapability(TransformGroup.ALLOW_CHILDREN_READ);
75  tg_.setCapability(TransformGroup.ALLOW_CHILDREN_EXTEND);
76  tg_.setCapability(TransformGroup.ALLOW_CHILDREN_WRITE);
77  tg_.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
78  tg_.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
79 
80  switchAxes_ = GrxShapeUtil.createAxes();
81  tg_.addChild(switchAxes_);
82 
83  bg_ = new BranchGroup();
84  bg_.setCapability(BranchGroup.ALLOW_DETACH);
85  bg_.setCapability(BranchGroup.ALLOW_CHILDREN_READ);
86  bg_.setCapability(BranchGroup.ALLOW_CHILDREN_EXTEND);
87 
88  bg_.addChild(tg_);
89 
90  createBoundingBox();
91 
92  children_ = new Vector<GrxTransformItem>();
93 
94  }
95 
100  public void addChild(GrxTransformItem child){
101  children_.add(child);
102  child.parent_ = this;
103  tg_.addChild(child.bg_);
104  resizeBoundingBox();
105  }
106 
111  public void removeChild(GrxTransformItem child){
112  children_.remove(child);
113  child.bg_.detach();
114  resizeBoundingBox();
115  }
116 
120  public void delete() {
121  try{
122  // delete children first
123  while (children_.size() > 0){
124  children_.get(0).delete();
125  }
126 
127  if (parent_ != null){
128  parent_.removeChild(this);
129  // I don't know why the following line is required.
130  // But without the line, this transform is moved to the origin.
131  model_.calcForwardKinematics();
132  }
133  }catch(Exception ex){
134  ex.printStackTrace();
135  }
136  manager_.itemChange(this, GrxPluginManager.REMOVE_ITEM);
137  }
138 
143  public GrxModelItem model() {
144  return model_;
145  }
146 
147  public void setFocused(boolean b){
148  super.setFocused(b);
149  switchAxes_.setWhichChild(b? Switch.CHILD_ALL:Switch.CHILD_NONE);
150  switchBb_.setWhichChild(b? Switch.CHILD_ALL:Switch.CHILD_NONE);
151  }
152 
153  private void createBoundingBox(){
155  modifier.init_ = true;
157  Color3f color = new Color3f(1.0f, 0.0f, 0.0f);
158  switchBb_ = SceneGraphModifier._makeSwitchNode(modifier._makeBoundingBox(color));
159  tg_.addChild(switchBb_);
160  }
161 
162  protected void resizeBoundingBox(){
163  Transform3D trorg = new Transform3D();
164  tg_.getTransform(trorg);
165  try{
166  Transform3D tr = new Transform3D();
167  tg_.setTransform(tr);
168 
170 
171  modifier.init_ = true;
173  modifier._calcUpperLower(tg_, tr);
174 
175  Shape3D shapeNode = (Shape3D)switchBb_.getChild(0);
176  Geometry gm = (Geometry)shapeNode.getGeometry(0);
177 
178  Point3f[] p3fW = modifier._makePoints();
179  if (gm instanceof QuadArray) {
180  QuadArray qa = (QuadArray) gm;
181  qa.setCoordinates(0, p3fW);
182  }
183 
184  }catch(Exception ex){
185  ex.printStackTrace();
186 
187  }
188  tg_.setTransform(trorg);
189  }
190 
191  public void gatherSensors(String type, List<GrxSensorItem> sensors){
192  if (this instanceof GrxSensorItem){
193  GrxSensorItem sensor = (GrxSensorItem)this;
194  if (sensor.type_.equals(type)){
195  sensors.add(sensor);
196  }
197  }
198  for (int i=0; i<children_.size(); i++){
199  children_.get(i).gatherSensors(type, sensors);
200  }
201  }
202 
203  // (Vector3)v = (Matrix4d)tg_*(Vector3d)v
204  public Vector3d transformV3 (Vector3d v){
205  Transform3D t3d = new Transform3D();
206  Vector3d p = new Vector3d();
207  Vector3d _v = new Vector3d(v);
208  tg_.getTransform(t3d);
209  t3d.transform(v, _v);
210  t3d.get(p);
211  _v.add(p);
212  return _v;
213  }
214 
215  public Switch getBBSwitch(){
216  resizeBoundingBox();
217  return switchBb_;
218  }
219 }
com.generalrobotix.ui.item.GrxTransformItem.parent_
GrxTransformItem parent_
Definition: GrxTransformItem.java:57
com.generalrobotix.ui.util.AxisAngle4d
Definition: AxisAngle4d.java:18
com.generalrobotix.ui.item.GrxTransformItem.model
GrxModelItem model()
get model item to which this item belongs
Definition: GrxTransformItem.java:143
com.generalrobotix.ui.item.GrxTransformItem.bg_
BranchGroup bg_
Definition: GrxTransformItem.java:55
i
png_uint_32 i
Definition: png.h:2732
com.generalrobotix.ui.grxui
Definition: GrxUIonEclipse-project-0.9.8/src/com/generalrobotix/ui/grxui/Activator.java:1
com.generalrobotix.ui.view
com.generalrobotix.ui.item.GrxTransformItem.GrxTransformItem
GrxTransformItem(String name, GrxPluginManager manager, GrxModelItem model)
Definition: GrxTransformItem.java:69
com.generalrobotix.ui.item.GrxTransformItem.createBoundingBox
void createBoundingBox()
Definition: GrxTransformItem.java:153
com.generalrobotix.ui.view.tdview.SceneGraphModifier._makeSwitchNode
static Switch _makeSwitchNode(Shape3D shape)
Definition: SceneGraphModifier.java:469
com.generalrobotix.ui.view.tdview.SceneGraphModifier.RESIZE_BOUNDS
static final int RESIZE_BOUNDS
Definition: SceneGraphModifier.java:32
com.generalrobotix.ui.util.GrxShapeUtil.createAxes
static Switch createAxes()
create X(red),Y(green) and Z(blue) axes
Definition: GrxShapeUtil.java:36
jp.go
jp
swingTest.f
f
Definition: swingTest.py:6
jp.go.aist
b
long b
Definition: jpegint.h:371
com.generalrobotix.ui.item.GrxSensorItem.type_
String type_
Definition: GrxSensorItem.java:42
com.generalrobotix.ui.view.tdview.SceneGraphModifier._makeBoundingBox
Shape3D _makeBoundingBox(Color3f color)
Definition: SceneGraphModifier.java:392
type
png_infop png_charp png_int_32 png_int_32 int * type
Definition: png.h:2330
com.generalrobotix.ui.item.GrxTransformItem.switchAxes_
Switch switchAxes_
Definition: GrxTransformItem.java:60
com.generalrobotix.ui.view.tdview.SceneGraphModifier._calcUpperLower
void _calcUpperLower(Node node, Transform3D t3dParent)
Definition: SceneGraphModifier.java:148
com.generalrobotix.ui.grxui.GrxUIPerspectiveFactory
Definition: GrxUIPerspectiveFactory.java:17
com.generalrobotix.ui.item.GrxTransformItem.gatherSensors
void gatherSensors(String type, List< GrxSensorItem > sensors)
Definition: GrxTransformItem.java:191
com.generalrobotix.ui.item.GrxTransformItem.getBBSwitch
Switch getBBSwitch()
Definition: GrxTransformItem.java:215
com.generalrobotix.ui.item.GrxTransformItem.transformV3
Vector3d transformV3(Vector3d v)
Definition: GrxTransformItem.java:204
com.generalrobotix.ui.item.GrxTransformItem.resizeBoundingBox
void resizeBoundingBox()
Definition: GrxTransformItem.java:162
com.generalrobotix.ui.view.tdview.SceneGraphModifier
Definition: SceneGraphModifier.java:28
com.generalrobotix.ui.item.GrxTransformItem.switchBb_
Switch switchBb_
Definition: GrxTransformItem.java:61
com.generalrobotix.ui.item.GrxSensorItem
sensor
Definition: GrxSensorItem.java:41
jp.go.aist.hrp
com.generalrobotix.ui.item.GrxTransformItem
item which have a transformation
Definition: GrxTransformItem.java:53
name
png_infop png_charpp name
Definition: png.h:2379
com.generalrobotix.ui.item.GrxTransformItem.removeChild
void removeChild(GrxTransformItem child)
remove a child from children
Definition: GrxTransformItem.java:111
com.generalrobotix.ui.view.tdview.SceneGraphModifier.CREATE_BOUNDS
static final int CREATE_BOUNDS
Definition: SceneGraphModifier.java:31
com.generalrobotix.ui.view.tdview.SceneGraphModifier._makePoints
Point3f[] _makePoints()
Definition: SceneGraphModifier.java:290
com.generalrobotix.ui.item.GrxTransformItem.children_
Vector< GrxTransformItem > children_
Definition: GrxTransformItem.java:58
com.generalrobotix.ui.item.GrxTransformItem.tg_
TransformGroup tg_
Definition: GrxTransformItem.java:54
com.generalrobotix.ui.item.GrxModelItem.calcForwardKinematics
void calcForwardKinematics()
compute forward kinematics
Definition: GrxModelItem.java:1055
com.generalrobotix
com.generalrobotix.ui.view.tdview.SceneGraphModifier.init_
boolean init_
Definition: SceneGraphModifier.java:45
com.generalrobotix.ui.GrxPluginManager
プラグイン管理クラス GrxUIの核になるクラス。プラグインのロード等の、初期化を実行する。 プラグインとそのアイテムのマップ(::pluginMap_)、プラグインとその情報のマップ(::pinfoM...
Definition: GrxPluginManager.java:79
com.generalrobotix.ui.GrxPluginManager.REMOVE_ITEM
static final int REMOVE_ITEM
Definition: GrxPluginManager.java:96
com.generalrobotix.ui.util.MessageBundle
Definition: MessageBundle.java:16
com.generalrobotix.ui.GrxBaseItem
Definition: GrxBaseItem.java:35
com.generalrobotix.ui.util.GrxShapeUtil
functions to make various basic shapes
Definition: GrxShapeUtil.java:30
com
com.generalrobotix.ui.item.GrxModelItem
item corresponds to a robot model
Definition: GrxModelItem.java:52
com.generalrobotix.ui.view.tdview
Definition: BadLinkStructureException.java:19
com.generalrobotix.ui.util
Definition: AlertBox.java:17
jp.go.aist.hrp.simulator
Definition: PathConsumer.java:8
com.generalrobotix.ui
com.generalrobotix.ui.view.tdview.SceneGraphModifier.getInstance
static SceneGraphModifier getInstance()
Definition: SceneGraphModifier.java:56
com.generalrobotix.ui.view.tdview.SceneGraphModifier.mode_
int mode_
Definition: SceneGraphModifier.java:48
com.generalrobotix.ui.util.GrxCorbaUtil
corba utility functions
Definition: GrxCorbaUtil.java:34
com.generalrobotix.ui.item.GrxTransformItem.model_
GrxModelItem model_
Definition: GrxTransformItem.java:62
com.generalrobotix.ui.item.GrxTransformItem.setFocused
void setFocused(boolean b)
set/unset focus on this plugin
Definition: GrxTransformItem.java:147
com.generalrobotix.ui.item.GrxTransformItem.addChild
void addChild(GrxTransformItem child)
add a child
Definition: GrxTransformItem.java:100


openhrp3
Author(s): AIST, General Robotix Inc., Nakamura Lab of Dept. of Mechano Informatics at University of Tokyo
autogenerated on Wed Sep 7 2022 02:51:03