Ominaisuudet ja toiminnot
Ominaisuudet ja toiminnot
Tämä sivu kattaa jokaisen tärkeimmän ominaisuusalueen Aspose.3D 26.1.0 toimivilla C#-esimerkeillä.
Scenejen lataaminen ja tallentaminen
Scene.Open() lataa tiedoston; Scene.Save() vie sen. Tiedostomuoto tunnistetaan tiedostopäätteestä:
using Aspose.ThreeD;
var scene = new Scene();
scene.Open("input.obj");
scene.Save("output.glb");Käytä staattista tehdasta Scene.FromFile() vaihtoehtona:
var scene = Scene.FromFile("input.fbx");
scene.Save("output.stl");Formaattiin perustuvat asetukset
Anna LoadOptions tai SaveOptions aliluokkia tarkempaa hallintaa varten:
using Aspose.ThreeD;
using Aspose.ThreeD.Formats;
var scene = new Scene();
scene.Open("model.obj", new ObjLoadOptions { FlipCoordinateSystem = true });
scene.Save("model.fbx");Käytettävissä olevat asetusluokat:
| Luokka | Suunta | Keskeiset ominaisuudet |
|---|---|---|
ObjLoadOptions | Tuo | FlipCoordinateSystem, EnableMaterials, Scale |
ObjSaveOptions | Vie | FlipCoordinateSystem, EnableMaterials, PointCloud |
FbxLoadOptions | Tuo | (oletusasetukset) |
GltfLoadOptions | Tuo | (oletusasetukset) |
GltfSaveOptions | Vie | (oletusasetukset) |
StlLoadOptions | Tuo | (oletusasetukset) |
StlSaveOptions | Vie | (oletusasetukset) |
ColladaLoadOptions | Tuo | FlipCoordinateSystem |
ColladaSaveOptions | Vie | Indented, TransformStyle |
PlyLoadOptions | Tuo | (oletusasetukset) |
Scene‑graafin rakentaminen
Luo solmuja ja liitä entiteettejä rakentaaksesi hierarkian:
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ääsy lapsiin kautta node.ChildNodes ja liitettyyn entiteettiin kautta node.Entity.
Mesh ja alkeismuodot
Luo Mesh ohjelmallisesti ohjauspisteiden ja monikulmioiden avulla:
// 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);Sisäänrakennetut primitiivit (Box, Sphere, Cylinder) voidaan muuntaa Mesh:
var box = new Box(10, 10, 10);
Mesh boxMesh = box.ToMesh();Vertex-elementit
Liitä normaalit, UV:t ja vertex-värit geometriaan:
var normals = new VertexElementNormal(MappingMode.ControlPoint, ReferenceMode.Direct);
mesh.AddElement(normals);Käytettävissä olevat kärjen elementtityypit: VertexElementNormal, VertexElementUV, VertexElementVertexColor, VertexElementBinormal, VertexElementTangent.
Muunnokset
Jokainen Node kantaa Transform kanssa Translation, Rotation, ja 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);Lue maailmanavaruuden sijainti käyttäen node.GlobalTransform.Matrix tai node.EvaluateGlobalTransform().
Materiaalit
Määritä materiaaleja solmuihin varjostustietoja varten:
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);Materiaalityypit: LambertMaterial, PhongMaterial, PbrMaterial.
Vinkkejä ja parhaita käytäntöjä
- Käytä
Scene.FromFile()yksiriviseen lataukseen, kun et tarvitse mukautettuaLoadOptions - Muunna primitiivit
MeshkanssaToMesh()ennen vertex-elementtien lisäämistä - Käytä
GltfSaveOptionskanssa.glblaajennus kompaktia binääritulostetta varten - Tarkista
node.Entitykohteellenullennen muuntamista — kaikki solmut eivät sisällä geometriaa - Käytä
PolygonModifier.Triangulate()muuntaa nelikulmaisverkot ennen vientiä pelkästään kolmioformaatteihin, kuten STL
Yleisiä ongelmia
| Ongelma | Syy | Korjaus |
|---|---|---|
ImportException ladattaessa | Ei-tuettu tai vioittunut tiedosto | Varmista, että tiedosto avautuu 3D‑katsojassa; tarkista, että formaatti on tuettujen luettelossa |
| Materiaalit puuttuvat OBJ‑latauksen jälkeen | .mtl tiedostoa ei löydy | Sijoita .mtl tiedosto viereen .obj tai aseta ObjLoadOptions.EnableMaterials = true |
| Mittakaavan epäsopivuus FBX‑tuonnin jälkeen | Eri mittayksiköjärjestelmät | Käytä ObjLoadOptions.Scale tai käytä Transform ladattaessa |
FAQ
Kuinka tunnistan tuntemattoman tiedoston formaatin?
Käytä FileFormat.Detect():
var format = FileFormat.Detect("unknown_file.bin");
Console.WriteLine(format.Extension);Voinko ladata suorasta virrasta tiedostopolun sijaan?
Kyllä. Scene.Open() hyväksyy Stream:
using var stream = File.OpenRead("model.glb");
scene.Open(stream);Mitkä formaatit tukevat sekä tuontia että vientiä?
OBJ, STL, glTF/GLB, FBX, COLLADA ja 3MF tukevat molempia suuntia. PLY tukee vain tuontia (PLY-vientitoimintoa ei ole toteutettu).
API-viitteiden yhteenveto
| Luokka / Metodi | Kuvaus |
|---|---|
Scene | Ylätason 3D‑kohtauksen säiliö |
Scene.Open() | Lataa 3D‑tiedosto polun tai streamin avulla |
Scene.Save() | Vie kohtaus tiedostoon tai streamiin |
Scene.FromFile() | Staattinen tehdas lataamaan ja palauttamaan a Scene |
Node | Skenan hierarkiasolmu, joka sisältää entiteettejä ja muunnoksia |
Node.CreateChildNode() | Luo ja liitä lapsisolmu |
Mesh | Polygoniverkko, jossa on ohjauspisteet ja kasvojen listat |
Mesh.CreatePolygon() | Määritä polygonin pinta kärkinumeroiden perusteella |
Box / Sphere / Cylinder | Sisäänrakennetut parametriset primitiivit |
Transform | Paikallinen siirto, kierto ja skaalaus |
FileFormat | Rekisteri ja tunnistin tuetuille formaateille |
LambertMaterial / PhongMaterial / PbrMaterial | Materiaalityypit varjostukseen |