Mesh — Aspose.3D FOSS for Java

חבילה: com.aspose.threed (aspose-3d-foss 26.1.0)

Mesh מאחסן את גאומטריית הפוליגון כרשימה של נקודות בקרה (מיקומי קודקוד) ורשימה של משטחי פוליגון. כל משטח פוליגון הוא רשימה של אינדקסים מבוססי אפס למערך נקודות הבקרה. המשטחים יכולים להיות משולשים, מרובעים, או פוליגונים בעלות אריות גבוהות יותר. נתונים נוספים לכל קודקוד – נורמליות, קואורדינטות UV, צבעי קודקוד – מצורפים כ VertexElement שכבות.

public class Mesh extends Geometry

Methods

A3DObject -> SceneObject -> Entity -> Geometry -> Mesh


Methods

בנה רשת משולש יחיד מאפס:

import com.aspose.threed.Scene;
import com.aspose.threed.*;


// Create the mesh and add three vertex positions
Mesh mesh = new Mesh();
mesh.getControlPoints().add(new Vector4(0.0, 0.0, 0.0, 1.0));   // vertex 0
mesh.getControlPoints().add(new Vector4(1.0, 0.0, 0.0, 1.0));   // vertex 1
mesh.getControlPoints().add(new Vector4(0.5, 1.0, 0.0, 1.0));   // vertex 2

// Define one triangle face using vertex indices
mesh.createPolygon(0, 1, 2);

// Attach to a scene and save
Scene scene = new Scene();
scene.getRootNode().createChildNode("triangle", mesh);
scene.save("triangle.stl");

בנה רשת מרובע (הערה: triangulate() היא תבנית — ראה אזהרה למטה):

import com.aspose.threed.Scene;
import com.aspose.threed.*;


Mesh mesh = new Mesh();
// Four corners of a unit square in the XZ plane
mesh.getControlPoints().add(new Vector4(0, 0, 0, 1.0));
mesh.getControlPoints().add(new Vector4(1, 0, 0, 1.0));
mesh.getControlPoints().add(new Vector4(1, 0, 1, 1.0));
mesh.getControlPoints().add(new Vector4(0, 0, 1, 1.0));

// One quad face
mesh.createPolygon(0, 1, 2, 3);
System.out.println("Polygons before triangulate: " + mesh.getPolygonCount());  // 1

// WARNING: triangulate() is a stub — it returns a clone, NOT a triangulated mesh.
// The polygon count will remain 1 (not 2).
Mesh triangulated = mesh.triangulate();
System.out.println("Polygons after triangulate: " + triangulated.getPolygonCount());  // still 1

Scene scene = new Scene();
scene.getRootNode().createChildNode("quad", triangulated);
// When saving to STL, pass triangle-only meshes to avoid vertex loss or malformed output.
scene.save("quad.glb");

Methods

MethodsMethodsMethodsMethodsMethods
controlPointsList<Vector4>getControlPoints()מערך מיקומי קודקוד. כל ערך הוא Vector4(x, y, z, w) כאשר w הוא 1.0 לנתוני מיקום. הוסף קודקודים על‑ידי קריאה ל‑ add() ברשימה שהוחזרה.
polygonCountintgetPolygonCount()מספר משטחי הפוליגון המוגדרים ברשת זו.
polygonsList<int[]>getPolygons()כל הגדרות המשטחים כרשימה של מערכי אינדקסים. כל מערך פנימי מכיל את אינדקסי הקודקודים (אל controlPoints).
edgesList<Integer>getEdges()נתוני אינדקס קצוות גולמיים. בעיקר לשימוש פנימי ולשאילתות טופולוגיה מתקדמות.
vertexElementsList<VertexElement>getVertexElements()כל שכבות רכיבי הקודקוד המחוברות כעת לרשת זו (נורמליות, UV, צבעים, וכו’).
visiblebooleangetVisible()setVisible(boolean)Methods false, הרשת מוסתרת במציגים שמכבדים נראות.
castShadowsbooleangetCastShadows()setCastShadows(boolean)האם רשת זו מטילה צללים במעבדי רינדור התומכים במפות צל.
receiveShadowsbooleangetReceiveShadows()setReceiveShadows(boolean)האם ה‑mesh הזה מקבל צללים מגאומטריה אחרת היוצרת צללים.

Methods

createPolygon(int... indices)

הגדר משטח polygon חדש על‑ידי מתן אינדקסי הקודקוד בסדר. האינדקסים מתייחסים למיקומים ב getControlPoints(). מקבל שלושה אינדקסים או יותר עבור triangles, quads, ו‑n‑gons.

MethodsMethodsMethods
indicesint...ארגומנטים של אינדקסי קודקוד ב‑winding order (בדרך כלל counter-clockwise כאשר נצפים מבחוץ).

מחזיר: void

Mesh mesh = new Mesh();
// ... populate control points ...
mesh.createPolygon(0, 1, 2);       // triangle
mesh.createPolygon(0, 1, 2, 3);    // quad
System.out.println(mesh.getPolygonCount());   // 2

triangulate()

תבנית: מחזיר שכפול של הרשת המקורית. מיועד לפצל את כל הפוליגונים למשולשים באמצעות טריאנגולציית מאוורר, אך הלוגיקה האמיתית של הטריאנגולציה עדיין לא יושמה. הרשת המקורית אינה משתנה.

מחזיר: Mesh – שכפול של הרשת המקורית (התנהגות תבנית).

import com.aspose.threed.*;

Mesh mesh = new Mesh();
mesh.getControlPoints().add(new Vector4(0, 0, 0, 1.0));
mesh.getControlPoints().add(new Vector4(1, 0, 0, 1.0));
mesh.getControlPoints().add(new Vector4(1, 1, 0, 1.0));
mesh.getControlPoints().add(new Vector4(0, 1, 0, 1.0));
mesh.createPolygon(0, 1, 2, 3);   // one quad

Mesh triMesh = mesh.triangulate();
// Note: currently returns a clone, not a triangulated mesh
System.out.println(triMesh.getPolygonCount());

toMesh()

החזר זאת Mesh כ Mesh מופע. עבור Mesh אובייקטים, זהו פעולה זהות (מחזירה this). מוגדר על ה Geometry מחלקת הבסיס כדי לספק ממשק המרה אחיד בעת עבודה עם גנריים Geometry ההפניות.

מחזיר: Mesh

import com.aspose.threed.*;

Mesh ensureMesh(Geometry geom) {
    return geom.toMesh();
}

createElement(VertexElementType elementType, MappingMode mappingMode, ReferenceMode referenceMode)

הוסף חדש VertexElement שכבה מהסוג המוגדר לרשת. השתמש בזה כדי לצרף normals, tangents, binormals, vertex colours, ו‑smoothing groups.

MethodsMethodsMethods
elementTypeVertexElementTypeסוג הנתונים שהשכבה הזו מחזיקה (למשל,)., VertexElementType.NORMAL).
mappingModeMappingModeאיך הנתונים ממופים לגאומטריה: CONTROL_POINT, POLYGON_VERTEX, POLYGON, וכו'.
referenceModeReferenceModeאיך משתמשים באינדקסים: DIRECT או INDEX_TO_DIRECT.

מחזיר: VertexElement

import com.aspose.threed.*;





Mesh mesh = new Mesh();
mesh.getControlPoints().add(new Vector4(0, 0, 0, 1));
mesh.getControlPoints().add(new Vector4(1, 0, 0, 1));
mesh.getControlPoints().add(new Vector4(0.5, 1, 0, 1));
mesh.createPolygon(0, 1, 2);

VertexElement normalElement = mesh.createElement(
    VertexElementType.NORMAL,
    MappingMode.CONTROL_POINT,
    ReferenceMode.DIRECT
);

createElementUV(TextureMapping uvMapping, MappingMode mappingMode, ReferenceMode referenceMode)

הוסף שכבת קואורדינטות UV לרשת. זוהי השיטה המועדפת לצירוף נתוני קואורדינטות מרקם.

MethodsMethodsMethods
uvMappingTextureMappingמטרת ערוץ ה‑UV: DIFFUSE, SPECULAR, NORMAL, AMBIENT, וכו'.
mappingModeMappingModeאיך UVs ממופים לרכיבי גאומטריה.
referenceModeReferenceModeמצב אינדקסציה: DIRECT או INDEX_TO_DIRECT.

מחזיר: VertexElementUV

import com.aspose.threed.*;




Mesh mesh = new Mesh();
// ... define control points and polygons ...
VertexElementUV uvElement = mesh.createElementUV(
    TextureMapping.DIFFUSE,
    MappingMode.POLYGON_VERTEX,
    ReferenceMode.INDEX_TO_DIRECT
);

שיטות בוליאניות ואופטימיזציה (Stubs)

המתודות הבאות קיימות ב‑ Mesh אך הן תבניות שמחזירות עותק של הרשת המקורית מבלי לבצע את הפעולה המיועדת שלהן.

חשוב: union, difference, intersect, ו doBoolean הם מתודות סטטיות, לא מתודות של מופע. קראו להן כ- Mesh.union(a, b), לא a.union(b).

Methodsסוג החזרהMethods
static Mesh.union(Mesh a, Mesh b)Meshתבנית: מחזיר עותק של a. מיועד לאיחוד CSG.
static Mesh.difference(Mesh a, Mesh b)Meshתבנית: מחזיר עותק של a. מיועד לחיסור CSG.
static Mesh.intersect(Mesh a, Mesh b)Meshתבנית: מחזיר עותק של a. מיועד לחיתוך CSG.
static Mesh.doBoolean(BooleanOperation op, Mesh a, Matrix4 ma, Mesh b, Matrix4 mb)Meshתבנית: מחזיר עותק של a. מיועד ל‑CSG כללי עם טרנספורמציות.
optimize(boolean removeVertices)MeshStub: מחזיר עותק. ארבע גרסאות עומס של פרמטרים: optimize(boolean), optimize(boolean, float), optimize(boolean, float, float), optimize(boolean, float, float, float).
optimize2(boolean removeVertices)MeshStub: מחזיר עותק. נקודת כניסה לאופטימיזציה חלופית.

ראה גם

 עברית