コード例 #1
0
 private static Map<Geometry, SceneGraphComponent> getGeometries_R(
     SceneGraphComponent root, SceneGraphPath p) {
   p.push(root);
   Map<Geometry, SceneGraphComponent> r = new HashMap<Geometry, SceneGraphComponent>();
   if (root.getGeometry() != null) {
     Geometry g = root.getGeometry();
     if (g instanceof PointSet) { // remove vertex normals if flat shading
       PointSet pSet = (PointSet) g;
       if (pSet.getVertexAttributes().containsAttribute(Attribute.NORMALS)) {
         EffectiveAppearance ea = EffectiveAppearance.create(p);
         DefaultGeometryShader dgs = ShaderUtility.createDefaultGeometryShader(ea);
         DefaultPolygonShader ps = (DefaultPolygonShader) dgs.getPolygonShader();
         if (!ps.getSmoothShading()) {
           pSet.setVertexAttributes(Attribute.NORMALS, null);
         }
       }
     }
     r.put(root.getGeometry(), root);
   }
   for (int i = 0; i < root.getChildComponentCount(); i++) {
     Map<Geometry, SceneGraphComponent> subList = getGeometries_R(root.getChildComponent(i), p);
     if (subList.size() != 0) {
       r.putAll(subList);
     }
   }
   p.pop();
   return r;
 }