VertexElement — Aspose.3D Python API Reference

Pachet: aspose.threed.entities (aspose-3d-foss 26.1.0)

VertexElement este clasa de bază abstractă pentru toate straturile de date per-vertex care pot fi atașate la un Geometry obiect. Fiecare strat conține un tablou de valori de date împreună cu mapping_mode și reference_mode metadate care descriu cum se mapă datele pe geometria de bază. Subclasele sunt specializate pentru normale, coordonate UV, culori de vârf, tangente, binormale și grupuri de netezire.


from aspose.threed.entities import VertexElement

VertexElement

vertex_element_typeVertexElementTypecitireTip semantic al acestui strat (de exemplu,., NORMAL, UV, VERTEX_COLOR).
namestrcitire/scriereNume opțional pentru acest strat.
mapping_modeMappingModecitire/scriereControlează care primitivă geometrică este asociată fiecărei valori de date.
reference_modeReferenceModecitire/scriereControlează dacă valorile sunt adresate direct sau printr-un tablou de indici.
indiceslist[int]citireTablou de indici utilizat când reference_mode este INDEX_TO_DIRECT.
datalist[FVector4]citireValorile brute de date stocate ca FVector4 intrări (disponibile pe VertexElementFVector subclase).

set_data(data)NoneÎnlocuiește tabloul de date. Acceptă list[FVector2], list[FVector3], sau list[FVector4]; valorile sunt normalizate la FVector4 intern.
set_indices(data)NoneÎnlocuiți matricea de indici cu o listă de numere întregi.
clear()NoneEliminați toate valorile de date și indicii din strat.
copy_to(target)NoneCopiați datele și indicii către altă VertexElementFVector instanță.

VertexElementNormal

Stochează vectorii normali ai suprafeței. Datele de normale sunt de obicei utilizate de renderere pentru calculele de iluminare.

from aspose.threed.entities import VertexElementNormal

VertexElementVertexElementFVectorVertexElementNormal

VertexElementNormal(name="", mapping_mode=None, reference_mode=None)

vertex_element_type este fixat la VertexElementType.NORMAL.


VertexElementUV

Stochează coordonatele texturii UV. O mesh poate conține mai multe straturi UV pentru diferite canale de textură.

from aspose.threed.entities import VertexElementUV

VertexElementVertexElementFVectorVertexElementUV

VertexElementUV(texture_mapping=None, name="", mapping_mode=None, reference_mode=None)
texture_mappingTextureMappingCanalul de textură pe care îl servește acest strat UV. Implicit este TextureMapping.DIFFUSE.

Proprietate suplimentară

texture_mappingTextureMappingciteșteCanalul de textură cu care este asociat acest strat UV.

add_data(data)

Adaugă datele de coordonate UV. Acceptă list[Vector2], list[Vector3], list[FVector2], list[FVector3], sau list[FVector4]. Toate valorile sunt stocate intern ca FVector4 cu componentele neutilizate setate la 0.0.


VertexElementVertexColor

Stochează valori de culoare RGBA per-vertex în intervalul 0–1.

from aspose.threed.entities import VertexElementVertexColor

VertexElementVertexElementFVectorVertexElementVertexColor

VertexElementVertexColor(name="", mapping_mode=None, reference_mode=None)

vertex_element_type este fixat la VertexElementType.VERTEX_COLOR.


VertexElementTangent

Stochează vectori tangent per-vertex sau per-corner, folosiți pentru redarea hărților de normală.

from aspose.threed.entities import VertexElementTangent

VertexElementVertexElementFVectorVertexElementTangent

vertex_element_type este fixat la VertexElementType.TANGENT.


VertexElementBinormal

Stochează vectori binormali (bitangente) per-vertex sau per-corner, completând VertexElementTangent pentru maparea normală în spațiul tangent.

from aspose.threed.entities import VertexElementBinormal

VertexElementVertexElementFVectorVertexElementBinormal

vertex_element_type este fixat la VertexElementType.BINORMAL.


VertexElementSmoothingGroup

Stochează ID-uri întregi de grupuri de netezire per-poligon. Încărcate din fișiere OBJ care conțin s declarații.

from aspose.threed.entities import VertexElementSmoothingGroup

VertexElementVertexElementIntsTemplateVertexElementSmoothingGroup

vertex_element_type este fixat la VertexElementType.SMOOTHING_GROUP.


Enumerarea VertexElementType

Identifică rolul semantic al unui strat de element de vârf.

from aspose.threed.entities import VertexElementType
NORMALVectori normali ai suprafeței.
UVCoordonate UV ale texturii.
VERTEX_COLORCuloare RGBA pe fiecare vârf.
TANGENTVectori tangent pentru maparea normală.
BINORMALVectori binormali (bitangent).
SMOOTHING_GROUPID-uri întregi ale grupului de netezire per poligon.
MATERIALIndex de material per poligon.
POLYGON_GROUPIndex de grupare a poligoanelor.
VERTEX_CREASEGreutăți de plișare ale vârfurilor în subdiviziune.
EDGE_CREASEGreutăți de plișare ale muchiilor în subdiviziune.
USER_DATADate arbitrare definite de utilizator.
VISIBILITYIndicatori de vizibilitate per-element.
SPECULARCuloare sau intensitate speculară.
WEIGHTGreutăți de amestec pentru skinning.
HOLEIndicatori de găuri în poligon.

Enumerarea MappingMode

Controlează cu ce primitive geometrică este asociată fiecare valoare a elementului de vârf.

from aspose.threed.entities import MappingMode
CONTROL_POINTO valoare per punct de control (vârf).
POLYGON_VERTEXO valoare per colț de poligon (față‑vârf).
POLYGONO valoare per poligon.
EDGEO valoare per muchie.
ALL_SAMEO singură valoare se aplică întregului mesh.

Enumerarea ReferenceMode

Controlează modul în care este indexat taboul de date.

from aspose.threed.entities import ReferenceMode
DIRECTDatele sunt accesate secvențial, fără un tablou separat de indici.
INDEXDatele sunt accesate printr-un indices array separat.
INDEX_TO_DIRECTUn indices array mapează fiecare primitiv de mapare la o poziție în data array.

Atașează un strat de normale la o plasă (mapare DIRECTĂ):

from aspose.threed import Scene
from aspose.threed.entities import Mesh, VertexElementType, MappingMode, ReferenceMode, VertexElementNormal
from aspose.threed.utilities import Vector4, FVector4

mesh = Mesh()
mesh.control_points.append(Vector4(0.0, 0.0, 0.0, 1.0))
mesh.control_points.append(Vector4(1.0, 0.0, 0.0, 1.0))
mesh.control_points.append(Vector4(0.5, 1.0, 0.0, 1.0))
mesh.create_polygon(0, 1, 2)

normals: VertexElementNormal = mesh.create_element(
    VertexElementType.NORMAL,
    MappingMode.CONTROL_POINT,
    ReferenceMode.DIRECT,
)
normals.set_data([
    FVector4(0.0, 0.0, 1.0, 0.0),
    FVector4(0.0, 0.0, 1.0, 0.0),
    FVector4(0.0, 0.0, 1.0, 0.0),
])

scene = Scene()
scene.root_node.create_child_node("tri", mesh)
scene.save("triangle_normals.glb")

Atașați coordonatele UV (mapare INDEX_TO_DIRECT):

from aspose.threed import Scene
from aspose.threed.entities import Mesh, TextureMapping, MappingMode, ReferenceMode
from aspose.threed.utilities import Vector4, FVector4

mesh = Mesh()
for x, z in [(0, 0), (1, 0), (1, 1), (0, 1)]:
    mesh.control_points.append(Vector4(float(x), 0.0, float(z), 1.0))
mesh.create_polygon(0, 1, 2, 3)

uv = mesh.create_element_uv(
    TextureMapping.DIFFUSE,
    MappingMode.POLYGON_VERTEX,
    ReferenceMode.INDEX_TO_DIRECT,
)
uv.set_data([
    FVector4(0.0, 0.0, 0.0, 0.0),
    FVector4(1.0, 0.0, 0.0, 0.0),
    FVector4(1.0, 1.0, 0.0, 0.0),
    FVector4(0.0, 1.0, 0.0, 0.0),
])
uv.set_indices([0, 1, 2, 3])

scene = Scene()
scene.root_node.create_child_node("quad", mesh)
scene.save("quad_uv.glb")

Vezi și

 Română