Funkce a vlastnosti
Funkce a vlastnosti
Tato stránka pokrývá všechny hlavní oblasti funkcí Aspose.3D 26.1.0 s funkčními příklady v C#.
Načítání a ukládání scén
Scene.Open() načte soubor; Scene.Save() exportuje jej. Formát je detekován z přípony souboru:
using Aspose.ThreeD;
var scene = new Scene();
scene.Open("input.obj");
scene.Save("output.glb");Použijte statickou továrnu Scene.FromFile() jako alternativu:
var scene = Scene.FromFile("input.fbx");
scene.Save("output.stl");Formátově specifické možnosti
Předat LoadOptions nebo SaveOptions podtřídy pro jemnou kontrolu:
using Aspose.ThreeD;
using Aspose.ThreeD.Formats;
var scene = new Scene();
scene.Open("model.obj", new ObjLoadOptions { FlipCoordinateSystem = true });
scene.Save("model.fbx");Dostupné třídy možností:
| Třída | Směr | Klíčové vlastnosti |
|---|---|---|
ObjLoadOptions | Import | FlipCoordinateSystem, EnableMaterials, Scale |
ObjSaveOptions | Export | FlipCoordinateSystem, EnableMaterials, PointCloud |
FbxLoadOptions | Import | (výchozí nastavení) |
GltfLoadOptions | Import | (výchozí nastavení) |
GltfSaveOptions | Export | (výchozí nastavení) |
StlLoadOptions | Import | (výchozí nastavení) |
StlSaveOptions | Export | (výchozí nastavení) |
ColladaLoadOptions | Import | FlipCoordinateSystem |
ColladaSaveOptions | Export | Indented, TransformStyle |
PlyLoadOptions | Import | (výchozí nastavení) |
Vytváření grafu scény
Vytvořte uzly a připojte entity pro vytvoření hierarchie:
var scene = new Scene();
var root = scene.RootNode;
var boxNode = root.CreateChildNode("box", new Box(5, 5, 5));
var sphereNode = root.CreateChildNode("sphere", new Sphere(3));Přístup k podřízeným přes node.ChildNodes a k připojené entitě přes node.Entity.
Mesh a primitivy
Vytvořit Mesh programově s řídicími body a polygony:
// Mesh.ControlPoints uses Aspose.ThreeD.Utilities.Vector4
// (double-precision, lowercase fields: x, y, z, w)
using Aspose.ThreeD.Utilities;
var mesh = new Mesh("custom");
mesh.ControlPoints.Add(new Vector4(0.0, 0.0, 0.0)); // w defaults to 1.0
mesh.ControlPoints.Add(new Vector4(10.0, 0.0, 0.0));
mesh.ControlPoints.Add(new Vector4(10.0, 10.0, 0.0));
mesh.ControlPoints.Add(new Vector4(0.0, 10.0, 0.0));
mesh.CreatePolygon(0, 1, 2, 3);Vestavěné primitivy (Box, Sphere, Cylinder) lze převést na Mesh:
var box = new Box(10, 10, 10);
Mesh boxMesh = box.ToMesh();Vertexové elementy
Připojte normály, UV a barvy vrcholů k geometrii:
var normals = new VertexElementNormal(MappingMode.ControlPoint, ReferenceMode.Direct);
mesh.AddElement(normals);Dostupné typy vrcholových elementů: VertexElementNormal, VertexElementUV, VertexElementVertexColor, VertexElementBinormal, VertexElementTangent.
Transformace
Každý Node nese Transform s Translation, Rotation, a Scale:
var node = scene.RootNode.CreateChildNode("moved", new Box());
node.Transform.Translation = new FVector3(10, 0, 5);
node.Transform.Scale = new FVector3(2, 2, 2);Načíst pozici ve světovém prostoru pomocí node.GlobalTransform.Matrix nebo node.EvaluateGlobalTransform().
Materiály
Přiřaďte materiály uzlům pro data o stínování:
var mat = new PhongMaterial("shiny");
mat.Diffuse = new Vector4(0.8, 0.2, 0.2, 1.0);
mat.Specular = new Vector4(1, 1, 1, 1);
mat.Shininess = 32;
scene.RootNode.CreateChildNode("red_box", new Box(), mat);Typy materiálů: LambertMaterial, PhongMaterial, PbrMaterial.
Tipy a osvědčené postupy
- Použijte
Scene.FromFile()pro jednorázové načtení, když nepotřebujete vlastníLoadOptions - Převést primitivy na
MeshsToMesh()před přidáním vrcholových elementů - Použijte
GltfSaveOptionss.glbrozšířením pro kompaktní binární výstup - Zkontrolujte
node.Entitypronullpřed přetypováním — ne každý uzel obsahuje geometrii - Použijte
PolygonModifier.Triangulate()k převodu čtyřúhelníkových sítí před exportem do formátů podporujících jen trojúhelníky, jako je STL
Běžné problémy
| Problém | Příčina | Oprava |
|---|---|---|
ImportException při načtení | Nepodporovaný nebo poškozený soubor | Ověřte, že se soubor otevře ve 3D prohlížeči; zkontrolujte, že je formát v seznamu podporovaných |
| Chybějící materiály po načtení OBJ | .mtl soubor nenalezen | Umístěte .mtl soubor vedle .obj nebo nastavte ObjLoadOptions.EnableMaterials = true |
| Neshoda měřítka po importu FBX | Různé jednotkové systémy | Použijte ObjLoadOptions.Scale nebo použijte Transform po načtení |
FAQ
Jak mohu zjistit formát neznámého souboru?
Použijte FileFormat.Detect():
var format = FileFormat.Detect("unknown_file.bin");
Console.WriteLine(format.Extension);Mohu načíst ze streamu místo cesty k souboru?
Ano. Scene.Open() přijímá Stream:
using var stream = File.OpenRead("model.glb");
scene.Open(stream);Které formáty podporují jak import, tak export?
Formáty OBJ, STL, glTF/GLB, FBX, COLLADA a 3MF podporují obousměrně. PLY podporuje pouze import (exportér PLY není napojen).
Shrnutí referenčního API
| Třída / Metoda | Popis |
|---|---|
Scene | Kontejner 3D scény nejvyšší úrovně |
Scene.Open() | Načíst 3D soubor podle cesty nebo streamu |
Scene.Save() | Exportovat scénu do souboru nebo streamu |
Scene.FromFile() | Statická továrna pro načtení a vrácení Scene |
Node | Uzel hierarchie scény obsahující entity a transformace |
Node.CreateChildNode() | Vytvořit a připojit podřízený uzel |
Mesh | Polygonová síť s kontrolními body a seznamy ploch |
Mesh.CreatePolygon() | Definovat polygonální plochu pomocí indexů vrcholů |
Box / Sphere / Cylinder | Vestavěné parametrické primitivy |
Transform | Místní posunutí, rotace a měřítko |
FileFormat | Registr a detektor podporovaných formátů |
LambertMaterial / PhongMaterial / PbrMaterial | Typy materiálů pro stínování |