bool initialize(PointCloudMeshCollisionTraversalNodeRSS& node, BVHModel<RSS>& model1, const BVHModel<RSS>& model2, BVH_REAL collision_prob_threshold, int leaf_size_threshold, int num_max_contacts, bool exhaustive, bool enable_contact, BVH_REAL expand_r) { if(!(model1.getModelType() == BVH_MODEL_TRIANGLES || model1.getModelType() == BVH_MODEL_POINTCLOUD) || model2.getModelType() != BVH_MODEL_TRIANGLES) return false; node.model1 = &model1; node.model2 = &model2; node.vertices1 = model1.vertices; node.vertices2 = model2.vertices; node.tri_indices2 = model2.tri_indices; node.uc1.reset(new Uncertainty[model1.num_vertices]); estimateSamplingUncertainty(model1.vertices, model1.num_vertices, node.uc1.get()); BVHExpand(model1, node.uc1.get(), expand_r); node.num_max_contacts = num_max_contacts; node.exhaustive = exhaustive; node.enable_contact = enable_contact; node.collision_prob_threshold = collision_prob_threshold; node.leaf_size_threshold = leaf_size_threshold; relativeTransform(model1.getRotation(), model1.getTranslation(), model2.getRotation(), model2.getTranslation(), node.R, node.T); return true; }
bool initialize(MeshDistanceTraversalNodeRSS& node, const BVHModel<RSS>& model1, const BVHModel<RSS>& model2) { if(model1.getModelType() != BVH_MODEL_TRIANGLES || model2.getModelType() != BVH_MODEL_TRIANGLES) return false; node.model1 = &model1; node.model2 = &model2; node.vertices1 = model1.vertices; node.vertices2 = model2.vertices; node.tri_indices1 = model1.tri_indices; node.tri_indices2 = model2.tri_indices; relativeTransform(model1.getRotation(), model1.getTranslation(), model2.getRotation(), model2.getTranslation(), node.R, node.T); return true; }
bool initialize(MeshCollisionTraversalNodeRSS& node, const BVHModel<RSS>& model1, const BVHModel<RSS>& model2, int num_max_contacts, bool exhaustive, bool enable_contact) { if(model1.getModelType() != BVH_MODEL_TRIANGLES || model2.getModelType() != BVH_MODEL_TRIANGLES) return false; node.vertices1 = model1.vertices; node.vertices2 = model2.vertices; node.tri_indices1 = model1.tri_indices; node.tri_indices2 = model2.tri_indices; node.model1 = &model1; node.model2 = &model2; node.num_max_contacts = num_max_contacts; node.exhaustive = exhaustive; node.enable_contact = enable_contact; relativeTransform(model1.getRotation(), model1.getTranslation(), model2.getRotation(), model2.getTranslation(), node.R, node.T); return true; }