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řídaSměrKlíčové vlastnosti
ObjLoadOptionsImportFlipCoordinateSystem, EnableMaterials, Scale
ObjSaveOptionsExportFlipCoordinateSystem, EnableMaterials, PointCloud
FbxLoadOptionsImport(výchozí nastavení)
GltfLoadOptionsImport(výchozí nastavení)
GltfSaveOptionsExport(výchozí nastavení)
StlLoadOptionsImport(výchozí nastavení)
StlSaveOptionsExport(výchozí nastavení)
ColladaLoadOptionsImportFlipCoordinateSystem
ColladaSaveOptionsExportIndented, TransformStyle
PlyLoadOptionsImport(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 Mesh s ToMesh() před přidáním vrcholových elementů
  • Použijte GltfSaveOptions s .glb rozšířením pro kompaktní binární výstup
  • Zkontrolujte node.Entity pro null př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émPříčinaOprava
ImportException při načteníNepodporovaný nebo poškozený souborOvěř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 nenalezenUmístěte .mtl soubor vedle .obj nebo nastavte ObjLoadOptions.EnableMaterials = true
Neshoda měřítka po importu FBXRůzné jednotkové systémyPouž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 / MetodaPopis
SceneKontejner 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
NodeUzel hierarchie scény obsahující entity a transformace
Node.CreateChildNode()Vytvořit a připojit podřízený uzel
MeshPolygonová síť s kontrolními body a seznamy ploch
Mesh.CreatePolygon()Definovat polygonální plochu pomocí indexů vrcholů
Box / Sphere / CylinderVestavěné parametrické primitivy
TransformMístní posunutí, rotace a měřítko
FileFormatRegistr a detektor podporovaných formátů
LambertMaterial / PhongMaterial / PbrMaterialTypy materiálů pro stínování
 Čeština