com.jme3.scene.Spatial.depthFirstTraversal()方法的使用及代码示例

x33g5p2x  于2022-01-30 转载在 其他  
字(8.3k)|赞(0)|评价(0)|浏览(84)

本文整理了Java中com.jme3.scene.Spatial.depthFirstTraversal()方法的一些代码示例,展示了Spatial.depthFirstTraversal()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Spatial.depthFirstTraversal()方法的具体详情如下:
包路径:com.jme3.scene.Spatial
类名称:Spatial
方法名:depthFirstTraversal

Spatial.depthFirstTraversal介绍

[英]Visit each scene graph element ordered by DFS with the default post order mode.
[中]使用默认的后期排序模式访问DFS排序的每个场景图形元素。

代码示例

代码示例来源:origin: jMonkeyEngine/jmonkeyengine

/**
 * Visit each scene graph element ordered by DFS with the default post order mode.
 * @param visitor
 * @see #depthFirstTraversal(com.jme3.scene.SceneGraphVisitor, com.jme3.scene.Spatial.DFSMode) 
 */
public void depthFirstTraversal(SceneGraphVisitor visitor) {
  depthFirstTraversal(visitor, DFSMode.POST_ORDER);
}

代码示例来源:origin: jMonkeyEngine/jmonkeyengine

@Override
protected void controlUpdate(float tpf) {
  if (!enabled) {
    return;
  }
  // gathering geometries in the sub graph.
  // This must be done in the update phase as the gathering might add a matparam override
  targets.clear();
  this.spatial.depthFirstTraversal(targetLocator);
}

代码示例来源:origin: jMonkeyEngine/jmonkeyengine

public static Spatial migrate(Spatial source) {
  Map<Skeleton, Armature> skeletonArmatureMap = new HashMap<>();
  animControlVisitor.setMappings(skeletonArmatureMap);
  source.depthFirstTraversal(animControlVisitor);
  skeletonControlVisitor.setMappings(skeletonArmatureMap);
  source.depthFirstTraversal(skeletonControlVisitor);
  return source;
}

代码示例来源:origin: jMonkeyEngine/jmonkeyengine

@Override
public void depthFirstTraversal(SceneGraphVisitor visitor, DFSMode mode) {
  if (mode == DFSMode.POST_ORDER) {
    for (Spatial child : children.getArray()) {
      child.depthFirstTraversal(visitor);
    }
    visitor.visit(this);
  } else { //pre order
    visitor.visit(this);
    for (Spatial child : children.getArray()) {
      child.depthFirstTraversal(visitor);
    }
  }
}
@Override

代码示例来源:origin: jMonkeyEngine/jmonkeyengine

public static void validateScene(Spatial scene) {
  scene.updateGeometricState();
  scene.depthFirstTraversal(VISITOR);
}

代码示例来源:origin: jMonkeyEngine/jmonkeyengine

public ArmatureDebugger addArmatureFrom(Armature armature, Spatial forSpatial) {
  ArmatureDebugger ad = armatures.get(armature);
  if(ad != null){
    return ad;
  }
  JointInfoVisitor visitor = new JointInfoVisitor(armature);
  forSpatial.depthFirstTraversal(visitor);
  ad = new ArmatureDebugger(forSpatial.getName() + "_Armature", armature, visitor.deformingJoints);
  ad.setLocalTransform(forSpatial.getWorldTransform());
  if (forSpatial instanceof Node) {
    List<Geometry> geoms = new ArrayList<>();
    findGeoms((Node) forSpatial, geoms);
    if (geoms.size() == 1) {
      ad.setLocalTransform(geoms.get(0).getWorldTransform());
    }
  }
  armatures.put(armature, ad);
  debugNode.attachChild(ad);
  if (isInitialized()) {
    ad.initialize(app.getAssetManager(), app.getCamera());
  }
  return ad;
}

代码示例来源:origin: jMonkeyEngine/jmonkeyengine

private void displayNormals(Spatial s) {
  final Node debugTangents = new Node("debug tangents");
  debugTangents.setCullHint(Spatial.CullHint.Never);
  rootNode.attachChild(debugTangents);
  final Material debugMat = assetManager.loadMaterial("Common/Materials/VertexColor.j3m");
  debugMat.getAdditionalRenderState().setLineWidth(2);
  s.depthFirstTraversal(new SceneGraphVisitorAdapter() {
    @Override
    public void visit(Geometry g) {
      Mesh m = g.getMesh();
      Geometry debug = new Geometry(
          "debug tangents geom",
          TangentBinormalGenerator.genNormalLines(m, 0.1f)
      );
      debug.setMaterial(debugMat);
      debug.setCullHint(Spatial.CullHint.Never);
      debug.setLocalTransform(g.getWorldTransform());
      debugTangents.attachChild(debug);
    }
  });
}

代码示例来源:origin: jMonkeyEngine/jmonkeyengine

badModel.depthFirstTraversal(new SceneGraphVisitorAdapter(){
  @Override
  public void visit(Geometry g){

代码示例来源:origin: tonihele/OpenKeeper

private static void assignMapsToMaterial(Spatial model, AssetManager assetManager) {
  model.depthFirstTraversal(new SceneGraphVisitor() {
    @Override
    public void visit(Spatial spatial) {
      if (spatial instanceof Geometry) {
        Material material = ((Geometry) spatial).getMaterial();
        assignMapsToMaterial(assetManager, material);
      }
    }
  });
}

代码示例来源:origin: org.jmonkeyengine/jme3-core

/**
 * Visit each scene graph element ordered by DFS with the default post order mode.
 * @param visitor
 * @see #depthFirstTraversal(com.jme3.scene.SceneGraphVisitor, com.jme3.scene.Spatial.DFSMode) 
 */
public void depthFirstTraversal(SceneGraphVisitor visitor) {
  depthFirstTraversal(visitor, DFSMode.POST_ORDER);
}

代码示例来源:origin: net.sf.phat/phat-core

public static void updateLocationAndRotation(Spatial spatial) {
  SceneGraphVisitor visitor = new SceneGraphVisitor() {
    @Override
    public void visit(Spatial spat) {
      RigidBodyControl rbc = spat.getControl(RigidBodyControl.class);
      if (rbc != null) {
        rbc.setPhysicsLocation(spat.getWorldTranslation());
        rbc.setPhysicsRotation(spat.getWorldRotation());
      }
    }
  };
  spatial.depthFirstTraversal(visitor);
}

代码示例来源:origin: info.projectkyoto/mms-engine

public void add(Spatial sp) {
  sp.depthFirstTraversal(new SceneGraphVisitorAdapter() {
    @Override
    public void visit(Geometry geom) {
      add(geom);
    }
  });
}
public void add(Geometry geom) {

代码示例来源:origin: net.sf.phat/phat-core

public static void setHighPhysicsPrecision(Spatial spatial) {
  final float linear = 0.0001f;
  final float angular = 0.0001f;
  final float threshold = 0.0001f;
  final float radius = 1f;
  SceneGraphVisitor visitor = new SceneGraphVisitor() {
    @Override
    public void visit(Spatial spat) {
      RigidBodyControl rbc = spat.getControl(RigidBodyControl.class);
      if (rbc != null) {
        rbc.setSleepingThresholds(linear, angular);
        rbc.setCcdMotionThreshold(threshold);
        rbc.setCcdSweptSphereRadius(radius);
      }
    }
  };
  spatial.depthFirstTraversal(visitor);
}

代码示例来源:origin: tonihele/OpenKeeper

spatial.depthFirstTraversal(new SceneGraphVisitor() {
  @Override
  public void visit(Spatial spatial) {

代码示例来源:origin: tonihele/OpenKeeper

/**
 * Creates a blueprint material for the wanted spatial
 *
 * @param assetManager the asset manager
 * @param spatial the spatial which to change to blueprint
 */
public static void setBlueprint(AssetManager assetManager, Spatial spatial) {
  spatial.depthFirstTraversal(new SceneGraphVisitor() {
    @Override
    public void visit(Spatial spatial) {
      if (!(spatial instanceof Geometry)) {
        return;
      }
      // Don't highlight non-removables
      if (Boolean.FALSE.equals(spatial.getUserData(AssetUtils.USER_DATA_KEY_REMOVABLE))) {
        return;
      }
      try {
        Material mat = new Material(assetManager,
            "Common/MatDefs/Misc/Unshaded.j3md");
        mat.setColor("Color", new ColorRGBA(0, 0, 0.8f, 0.4f));
        mat.getAdditionalRenderState().setBlendMode(BlendMode.Alpha);
        spatial.setMaterial(mat);
      } catch (Exception e) {
        logger.log(Level.WARNING, "Failed to set material color!", e);
      }
    }
  });
}

代码示例来源:origin: tonihele/OpenKeeper

spatial.depthFirstTraversal(new SceneGraphVisitor() {
  @Override
  public void visit(Spatial spatial) {

代码示例来源:origin: tonihele/OpenKeeper

private void toggleWireframe() {
  Spatial spat = rootNode.getChild(ModelViewer.NODE_NAME);
  if (spat != null) {
    spat.depthFirstTraversal(new SceneGraphVisitor() {
      @Override
      public void visit(Spatial spatial) {
        if (spatial instanceof Geometry) {
          ((Geometry) spatial).getMaterial().getAdditionalRenderState().setWireframe(wireframe);
        }
      }
    });
  }
}

代码示例来源:origin: info.projectkyoto/mms-engine

@Override
public void depthFirstTraversal(SceneGraphVisitor visitor) {
  for (Spatial child : children.getArray()) {
    child.depthFirstTraversal(visitor);
  }
  visitor.visit(this);
}

代码示例来源:origin: org.jmonkeyengine/jme3-core

@Override
public void depthFirstTraversal(SceneGraphVisitor visitor, DFSMode mode) {
  if (mode == DFSMode.POST_ORDER) {
    for (Spatial child : children.getArray()) {
      child.depthFirstTraversal(visitor);
    }
    visitor.visit(this);
  } else { //pre order
    visitor.visit(this);
    for (Spatial child : children.getArray()) {
      child.depthFirstTraversal(visitor);
    }
  }
}
@Override

代码示例来源:origin: tonihele/OpenKeeper

private void toggleShowNormals() {
  Spatial spat = rootNode.getChild(ModelViewer.NODE_NAME);
  if (spat != null && spat instanceof Node) {
    // See if it already has the normal meshes generated
    Node normals = (Node) ((Node) spat).getChild(ModelViewer.NODE_NAME_NORMALS);
    if (normals != null) {
      normals.setCullHint(showNormals ? Spatial.CullHint.Never : Spatial.CullHint.Always);
    } else if (showNormals) {
      // Generate
      final Node nodeNormals = new Node(ModelViewer.NODE_NAME_NORMALS);
      spat.depthFirstTraversal(new SceneGraphVisitor() {
        @Override
        public void visit(Spatial spatial) {
          if (spatial instanceof Geometry) {
            Geometry g = (Geometry) spatial;
            Mesh normalMesh = TangentBinormalGenerator.genNormalLines(g.getMesh(), 0.1f);
            Geometry normalGeometry = new Geometry(g.getName() + "Normal", normalMesh);
            Material mat = new Material(assetManager,
                "Common/MatDefs/Misc/Unshaded.j3md");
            mat.setColor("Color", ColorRGBA.Red);
            normalGeometry.setMaterial(mat);
            nodeNormals.attachChild(normalGeometry);
          }
        }
      });
      nodeNormals.setCullHint(Spatial.CullHint.Never);
      ((Node) spat).attachChild(nodeNormals);
    }
  }
}

相关文章

Spatial类方法