示例#1
0
        public static void mask_test()
        {
            DMesh3 input = TestUtil.LoadTestMesh("C:\\meshes\\user_bugs\\mask_solid.obj");
            //DMesh3 input = TestUtil.LoadTestMesh("C:\\meshes\\user_bugs\\mask_highres_region_1.obj");
            ConstantMeshSourceOp sourceOp = new ConstantMeshSourceOp(input, false, true);

            System.Console.WriteLine("finished reading...");

            RemeshOp remesh = new RemeshOp();

            remesh.MeshSource      = sourceOp;
            remesh.PreserveCreases = true;
            //remesh.CreaseAngle = 60;
            //remesh.RemeshRounds = 1;
            //remesh.EnableSplits = false;
            //remesh.EnableCollapses = true;
            //remesh.EnableFlips = false;
            //remesh.EnableSmoothing = false;

            remesh.TargetEdgeLength = 0.5;

            DMesh3 result = remesh.ExtractDMesh();

            System.Console.WriteLine("finished remeshing...");


            Util.WriteDebugMesh(result, "c:\\meshes\\user_bugs\\mask_solid_remesh.obj");
        }
示例#2
0
        public LegModel(LegSO legIn, SOMaterial rectifiedMaterial) : base(legIn.Mesh, false, legIn.Spatial)
        {
            leg      = legIn;
            leg.Name = "InitialLeg";

            legIn.OnMeshModified += on_leg_scan_modified;

            rectified_leg = leg.DuplicateSubtype <RectifiedLegSO>();
            rectified_leg.EnableSpatial = false;
            leg.GetScene().AddSceneObject(rectified_leg, false);
            rectified_leg.AssignSOMaterial(rectifiedMaterial);
            rectified_leg.Name = "RectifiedLeg";

            //SOMeshSource = new ConstantMeshSourceOp(legIn.Mesh, true, false);
            SOMeshSource = new ConstantMeshSourceOp();

            SO_Op          = new UniquePairSet <SceneObject, ModelingOperator>();
            Combiner       = new DisplacementCombinerOp();
            VertexDisplace = new MeshVertexDisplacementOp()
            {
                MeshSource         = SOMeshSource,
                DisplacementSource = Combiner
            };
            PostScale = new MeshScaleOp()
            {
                MeshSource = VertexDisplace
            };
            Compute = new ThreadedMeshComputeOp()
            {
                MeshSource = PostScale
            };

            // add global brush layer
            BrushLayer = new VectorDisplacementMapOp()
            {
                MeshSource = SOMeshSource
            };
            Combiner.Append(BrushLayer);


            SOMeshSource.SetMesh(legIn.Mesh, true, false);
        }
示例#3
0
        public static void basic_test()
        {
            DMesh3 target = TestUtil.LoadTestInputMesh("twocylinder_orig.obj");
            DMesh3 mesh   = TestUtil.LoadTestInputMesh("twocylinder_approx.obj");

            DMeshAABBTree3 targetSpatial = new DMeshAABBTree3(target, true);

            ConstantMeshSourceOp sourceOp = new ConstantMeshSourceOp(mesh, true, true);
            ConstantMeshSourceOp targetOp = new ConstantMeshSourceOp(target, true, true);

            RemesherPro remesher = new RemesherPro(mesh);

            remesher.SetTargetEdgeLength(0.5f);
            //remesher.MinEdgeLength = 0.25;
            remesher.SmoothSpeedT = 0.5f;
            var ProjTarget = new MeshProjectionTarget(target, targetSpatial);

            remesher.SetProjectionTarget(ProjTarget);

            remesher.SharpEdgeReprojectionRemesh(20, 40);

            TestUtil.WriteTestOutputMesh(mesh, "reproject_cylinder.obj");
        }