public static fMesh CreatePuncturedDisc(float innerRadius, float outerRadius, int nSteps, float fStartAngleDeg = 0.0f, float fEndAngleDeg = 360.0f) { PuncturedDiscGenerator gen = new PuncturedDiscGenerator() { Slices = nSteps, Clockwise = false, InnerRadius = innerRadius, OuterRadius = outerRadius, StartAngleDeg = fStartAngleDeg, EndAngleDeg = fEndAngleDeg }; gen.Generate(); return new fMesh(gen.MakeUnityMesh(false, false)); }
public static void test_basic_generators() { TrivialDiscGenerator disc_gen = new TrivialDiscGenerator(); disc_gen.Generate(); WriteGeneratedMesh(disc_gen, "__g3Test_disc.obj"); TrivialRectGenerator rect_gen = new TrivialRectGenerator(); rect_gen.Generate(); WriteGeneratedMesh(rect_gen, "__g3Test_rect.obj"); PuncturedDiscGenerator punc_disc_gen = new PuncturedDiscGenerator(); punc_disc_gen.Generate(); WriteGeneratedMesh(punc_disc_gen, "__g3Test_punctured_disc.obj"); TrivialBox3Generator box_gen = new TrivialBox3Generator(); Frame3f f = Frame3f.Identity; f.Rotate(Quaternionf.AxisAngleD(Vector3f.AxisY, 45.0f)); f.Rotate(Quaternionf.AxisAngleD(Vector3f.AxisZ, 45.0f)); box_gen.Box = new Box3d(f.Origin, f.X, f.Y, f.Z, new Vector3d(3, 2, 1)); //box_gen.NoSharedVertices = true; box_gen.Generate(); WriteGeneratedMesh(box_gen, "__g3Test_trivial_box.obj"); RoundRectGenerator roundrect_gen = new RoundRectGenerator(); roundrect_gen.Width = 2; roundrect_gen.Generate(); WriteGeneratedMesh(roundrect_gen, "__g3Test_round_rect.obj"); }
public override void PreRender() { if (bDiscValid) { return; } PuncturedDiscGenerator discGen = new PuncturedDiscGenerator() { OuterRadius = outerRadius, InnerRadius = innerRadius, StartAngleDeg = startAngleDeg, EndAngleDeg = endAngleDeg, Clockwise = false }; discGen.Generate(); fMesh newMesh = new fMesh(discGen.MakeUnityMesh()); UpdateMesh(newMesh, true, true); bDiscValid = true; }
override protected void BuildGizmo() { gizmo.SetName("SurfaceConstrainedGizmo"); make_materials(); centerGO = AppendMeshGO("object_origin", UnityUtil.GetPrimitiveMesh(PrimitiveType.Sphere), srcMaterial, gizmo); centerGO.SetLocalScale(WidgetScale); Widgets[centerGO] = new SurfaceConstrainedPointWidget(this, this.parentScene) { RootGameObject = centerGO, StandardMaterial = srcMaterial, HoverMaterial = srcHoverMaterial }; PuncturedDiscGenerator discgen = new PuncturedDiscGenerator() { StartAngleDeg = 180, EndAngleDeg = 270, OuterRadius = 1.5f, InnerRadius = 0.75f }; discgen.Generate(); SimpleMesh discmesh = discgen.MakeSimpleMesh(); MeshTransforms.Rotate(discmesh, Vector3d.Zero, Quaternionf.AxisAngleD(Vector3f.AxisX, 90)); rotateGO = AppendMeshGO("object_rotate", new fMesh(discmesh), srcMaterial, gizmo); rotateGO.SetLocalScale(WidgetScale); Widgets[rotateGO] = new AxisRotationWidget(2) { RootGameObject = rotateGO, StandardMaterial = srcMaterial, HoverMaterial = srcHoverMaterial }; gizmo.Hide(); }
public static void test_basic_generators() { TrivialDiscGenerator disc_gen = new TrivialDiscGenerator(); WriteGeneratedMesh(disc_gen, "meshgen_Disc.obj"); TrivialRectGenerator rect_gen = new TrivialRectGenerator(); WriteGeneratedMesh(rect_gen, "meshgen_Rect.obj"); GriddedRectGenerator gridrect_gen = new GriddedRectGenerator(); WriteGeneratedMesh(gridrect_gen, "meshgen_GriddedRect.obj"); PuncturedDiscGenerator punc_disc_gen = new PuncturedDiscGenerator(); WriteGeneratedMesh(punc_disc_gen, "meshgen_PuncturedDisc.obj"); TrivialBox3Generator box_gen = new TrivialBox3Generator(); Frame3f f = Frame3f.Identity; f.Rotate(Quaternionf.AxisAngleD(Vector3f.AxisY, 45.0f)); f.Rotate(Quaternionf.AxisAngleD(Vector3f.AxisZ, 45.0f)); box_gen.Box = new Box3d(f.Origin, f.X, f.Y, f.Z, new Vector3d(3, 2, 1)); WriteGeneratedMesh(box_gen, "meshgen_TrivialBox_shared.obj"); box_gen.NoSharedVertices = true; WriteGeneratedMesh(box_gen, "meshgen_TrivialBox_noshared.obj"); RoundRectGenerator roundrect_gen = new RoundRectGenerator(); roundrect_gen.Width = 2; WriteGeneratedMesh(roundrect_gen, "meshgen_RoundRect.obj"); GridBox3Generator gridbox_gen = new GridBox3Generator(); WriteGeneratedMesh(gridbox_gen, "meshgen_GridBox_shared.obj"); gridbox_gen.NoSharedVertices = true; WriteGeneratedMesh(gridbox_gen, "meshgen_GridBox_noshared.obj"); Sphere3Generator_NormalizedCube normcube_gen = new Sphere3Generator_NormalizedCube(); WriteGeneratedMesh(normcube_gen, "meshgen_Sphere_NormalizedCube_shared.obj"); normcube_gen.NoSharedVertices = true; normcube_gen.Box = new Box3d(new Frame3f(Vector3f.One, Vector3f.One), Vector3d.One * 1.3); WriteGeneratedMesh(normcube_gen, "meshgen_Sphere_NormalizedCube_noshared.obj"); TubeGenerator tube_gen = new TubeGenerator() { Vertices = new List <Vector3d>() { Vector3d.Zero, Vector3d.AxisX, 2 * Vector3d.AxisX, 3 * Vector3d.AxisX }, Polygon = Polygon2d.MakeCircle(1, 16) }; WriteGeneratedMesh(tube_gen, "meshgen_TubeGenerator.obj"); tube_gen.Polygon.Translate(Vector2d.One); tube_gen.CapCenter = Vector2d.One; WriteGeneratedMesh(tube_gen, "meshgen_TubeGenerator_shifted.obj"); }