Last active
February 12, 2020 13:58
-
-
Save aspose-com-gists/0672215ca08d7566bd64d657e2b228a7 to your computer and use it in GitHub Desktop.
Aspose.3D for Java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Initialize scene object | |
Scene scene = new Scene(); | |
// Call Common class create mesh using polygon builder method to set mesh instance | |
Mesh mesh = Common.createMeshUsingPolygonBuilder(); | |
// Each cube node has their own translation | |
Node cube1 = scene.getRootNode().createChildNode("cube1", mesh); | |
// Find translation property on node's transform object | |
Property translation = cube1.getTransform().findProperty("Translation"); | |
// Create a curve mapping based on translation property | |
CurveMapping mapping = new CurveMapping(scene, translation); | |
// Create the animation curve on X component of the scale | |
Curve curve; | |
mapping.bindCurve("X", curve = new Curve()); | |
// Move node's translation to (10, 0, 10) at 0 sec using bezier interpolation | |
curve.add(0, 10.0f, Interpolation.BEZIER); | |
curve.add(0, 10.0f, Interpolation.BEZIER); | |
// Move node's translation to (20, 0, -10) at 3 sec | |
curve.add(3, 20.0f, Interpolation.BEZIER); | |
// Move node's translation to (30, 0, 0) at 5 sec | |
curve.add(5, 30.0f, Interpolation.LINEAR); | |
// Create the animation curve on Z component of the scale | |
mapping.bindCurve("Z", curve = new Curve()); | |
// Move node's translation to (10, 0, 10) at 0 sec using bezier interpolation | |
curve.add(0, 10.0f, Interpolation.BEZIER); | |
// Move node's translation to (20, 0, -10) at 3 sec | |
curve.add(3, -10.0f, Interpolation.BEZIER); | |
// Move node's translation to (30, 0, 0) at 5 sec | |
curve.add(5, 0.0f, Interpolation.LINEAR); | |
// The path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
MyDir = MyDir + RunExamples.getOutputFilePath("PropertyToDocument.fbx"); | |
// Save 3D scene in the supported file formats | |
scene.save(MyDir, FileFormat.FBX7500ASCII); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// The path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
// Initialize scene object | |
Scene scene = new Scene(); | |
// Get a child node object | |
Node cameraNode = scene.getRootNode().createChildNode("camera", new Camera()); | |
// Set camera node translation | |
cameraNode.getTransform().setTranslation(new Vector3(100, 20, 0)); | |
((Camera)cameraNode.getEntity()).setTarget(scene.getRootNode().createChildNode("target")); | |
MyDir = MyDir + "camera-test.3ds"; | |
scene.save(MyDir, FileFormat.DISCREET3DS); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Initialize scene object | |
Scene scene = new Scene(); | |
// Initialize cube node object | |
Node cubeNode = new Node("cube"); | |
// Call Common class create mesh using polygon builder method to set mesh instance | |
Mesh mesh = Common.createMeshUsingPolygonBuilder(); | |
// Point node to the mesh | |
cubeNode.setEntity(mesh); | |
// Add cube to the scene | |
scene.getRootNode().addChildNode(cubeNode); | |
// Initiallize PhongMaterial object | |
PhongMaterial mat = new PhongMaterial(); | |
// Initiallize Texture object | |
Texture diffuse = new Texture(); | |
// The path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
// Set local file path | |
diffuse.setFileName(MyDir + "surface.dds"); | |
// Set Texture of the material | |
mat.setTexture(Material.MAP_DIFFUSE, diffuse); | |
// Embed raw content data to FBX (only for FBX and optional) | |
// Set file name | |
diffuse.setFileName("embedded-texture.png"); | |
// Set binary content | |
diffuse.setContent(Files.readAllBytes(Paths.get(MyDir, "aspose-logo.jpg"))); | |
// Set color | |
mat.setSpecularColor(new Vector3(1, 0, 0)); | |
// Set brightness | |
mat.setShininess(100); | |
// Set material property of the cube object | |
cubeNode.setMaterial(mat); | |
MyDir = MyDir + RunExamples.getOutputFilePath("MaterialToCube.fbx"); | |
// Save 3D scene in the supported file formats | |
scene.save(MyDir, FileFormat.FBX7400ASCII); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Initialize scene object | |
Scene scene = new Scene(); | |
// Get a child node object | |
Node top = scene.getRootNode().createChildNode(); | |
// Each cube node has their own translation | |
Node cube1 = top.createChildNode("cube1"); | |
// Call Common class create mesh using polygon builder method to set mesh instance | |
Mesh mesh = Common.createMeshUsingPolygonBuilder(); | |
// Point node to the mesh | |
cube1.setEntity(mesh); | |
// Set first cube translation | |
cube1.getTransform().setTranslation(new Vector3(-10, 0, 0)); | |
Node cube2 = top.createChildNode("cube2"); | |
// Point node to the mesh | |
cube2.setEntity(mesh); | |
// Set second cube translation | |
cube2.getTransform().setTranslation(new Vector3(10, 0, 0)); | |
// The rotated top node will affect all child nodes | |
top.getTransform().setRotation(Quaternion.fromEulerAngle(Math.PI, 4, 0)); | |
// The path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
MyDir = MyDir + RunExamples.getOutputFilePath("NodeHierarchy.fbx"); | |
// Save 3D scene in the supported file formats | |
scene.save(MyDir, FileFormat.FBX7500ASCII); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Initialize scene object | |
Scene scene = new Scene(); | |
// Initialize Node class object | |
Node cubeNode = new Node("cube"); | |
// Call Common class create mesh using polygon builder method to set mesh instance | |
Mesh mesh = Common.createMeshUsingPolygonBuilder(); | |
// Point node to the Mesh geometry | |
cubeNode.setEntity(mesh); | |
// Euler angles | |
cubeNode.getTransform().setEulerAngles(new Vector3(0.3, 0.1, -0.5)); | |
// Set translation | |
cubeNode.getTransform().setTranslation(new Vector3(0, 0, 20)); | |
// Add cube to the scene | |
scene.getRootNode().getChildNodes().add(cubeNode); | |
// The path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
MyDir = MyDir + RunExamples.getOutputFilePath("TransformationToNode.fbx"); | |
// Save 3D scene in the supported file formats | |
scene.save(MyDir, FileFormat.FBX7500ASCII); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Initialize scene object | |
Scene scene = new Scene(); | |
// Initialize Node class object | |
Node cubeNode = new Node("cube"); | |
// Call Common class create mesh using polygon builder method to set mesh instance | |
Mesh mesh = Common.createMeshUsingPolygonBuilder(); | |
// Point node to the Mesh geometry | |
cubeNode.setEntity(mesh); | |
// Set rotation | |
cubeNode.getTransform().setRotation(Quaternion.fromRotation(new Vector3(0, 1, 0), new Vector3(0.3, 0.5, 0.1))); | |
// Set translation | |
cubeNode.getTransform().setTranslation(new Vector3(0, 0, 20)); | |
// Add cube to the scene | |
scene.getRootNode().getChildNodes().add(cubeNode); | |
// The path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
MyDir = MyDir + RunExamples.getOutputFilePath("TransformationToNode.fbx"); | |
// Save 3D scene in the supported file formats | |
scene.save(MyDir, FileFormat.FBX7500ASCII); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Initialize scene object | |
Scene scene = new Scene(); | |
// Initialize Node class object | |
Node cubeNode = new Node("cube"); | |
// Call Common class create mesh using polygon builder method to set mesh instance | |
Mesh mesh = Common.createMeshUsingPolygonBuilder(); | |
// Point node to the Mesh geometry | |
cubeNode.setEntity(mesh); | |
// Set custom translation matrix | |
cubeNode.getTransform().setTransformMatrix(new Matrix4( | |
1, -0.3, 0, 0, | |
0.4, 1, 0.3, 0, | |
0, 0, 1, 0, | |
0, 20, 0, 1 | |
)); | |
// Add cube to the scene | |
scene.getRootNode().addChildNode(cubeNode); | |
// The path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
MyDir = MyDir + RunExamples.getOutputFilePath("TransformationToNode.fbx"); | |
// Save 3D scene in the supported file formats | |
scene.save(MyDir, FileFormat.FBX7500ASCII); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// The path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
// initialize a scene | |
Scene scene = new Scene(); | |
// initialize PBR material object | |
PbrMaterial mat = new PbrMaterial(); | |
// an almost metal material | |
mat.setMetallicFactor(0.9); | |
// material surface is very rough | |
mat.setRoughnessFactor(0.9); | |
// create a box to which the material will be applied | |
Node boxNode = scene.getRootNode().createChildNode("box", new Box()); | |
boxNode.setMaterial(mat); | |
// save 3d scene into STL format | |
scene.save(MyDir + "PBR_Material_Box_Out.stl", FileFormat.STLASCII); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// The path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
Scene scene = new Scene(); | |
Quaternion q1 = Quaternion.fromEulerAngle(Math.PI * 0.5, 0, 0); | |
Vector3.X_AXIS.x = 3; | |
Quaternion q2 = Quaternion.fromAngleAxis(-Math.PI * 0.5, Vector3.X_AXIS); | |
// Concatenate q1 and q2. q1 and q2 rotate alone x-axis with same angle but different direction, | |
// So the concatenated result will be identity quaternion. | |
Quaternion q3 = q1.concat(q2); | |
// Create 3 cylinders to represent each quaternion | |
Node cylinder = scene.getRootNode().createChildNode("cylinder-q1", new Cylinder(0.1, 1, 2)); | |
cylinder.getTransform().setRotation(q1); | |
cylinder.getTransform().setTranslation(new Vector3(-5, 2, 0)); | |
cylinder = scene.getRootNode().createChildNode("cylinder-q2", new Cylinder(0.1, 1, 2)); | |
cylinder.getTransform().setRotation(q2); | |
cylinder.getTransform().setTranslation(new Vector3(0, 2, 0)); | |
cylinder = scene.getRootNode().createChildNode("cylinder-q3", new Cylinder(0.1, 1, 2)); | |
cylinder.getTransform().setRotation(q3); | |
cylinder.getTransform().setTranslation(new Vector3(5, 2, 0)); | |
MyDir = MyDir + "test_out.fbx"; | |
// Save to file | |
scene.save(MyDir, FileFormat.FBX7400ASCII); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Initialize scene object | |
Scene scene = new Scene(); | |
// Initialize Node class object | |
Node cubeNode = new Node("cube"); | |
// Call Common class create mesh using polygon builder method to set mesh instance | |
Mesh mesh = Common.createMeshUsingPolygonBuilder(); | |
// Point node to the Mesh geometry | |
cubeNode.setEntity(mesh); | |
// Add Node to a scene | |
scene.getRootNode().getChildNodes().add(cubeNode); | |
// The path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
MyDir = MyDir + RunExamples.getOutputFilePath("CubeScene.fbx"); | |
// Save 3D scene in the supported file formats | |
scene.save(MyDir, FileFormat.FBX7400ASCII); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
List<Vector4> controlPoints = defineControlPoints(); | |
// Initialize mesh object | |
Mesh mesh = new Mesh(); | |
// Add control points to the mesh | |
mesh.getControlPoints().addAll(controlPoints); | |
// Create polygons to mesh | |
// Front face (Z+) | |
mesh.createPolygon(new int[] { 0, 1, 2, 3 }); | |
// Right side (X+) | |
mesh.createPolygon(new int[] { 1, 5, 6, 2 }); | |
// Back face (Z-) | |
mesh.createPolygon(new int[] { 5, 4, 7, 6 }); | |
// Left side (X-) | |
mesh.createPolygon(new int[] { 4, 0, 3, 7 }); | |
// Bottom face (Y-) | |
mesh.createPolygon(new int[] { 0, 4, 5, 1 }); | |
// Top face (Y+) | |
mesh.createPolygon(new int[] { 3, 2, 6, 7 }); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
List<Vector4> controlPoints = defineControlPoints(); | |
// Initialize mesh object | |
Mesh mesh = new Mesh(); | |
// Add control points to the mesh | |
mesh.getControlPoints().addAll(controlPoints); | |
// Indices of the vertices per each polygon | |
int[] indices = new int[] | |
{ | |
0,1,2,3, // Front face (Z+) | |
1,5,6,2, // Right side (X+) | |
5,4,7,6, // Back face (Z-) | |
4,0,3,7, // Left side (X-) | |
0,4,5,1, // Bottom face (Y-) | |
3,2,6,7 // Top face (Y+) | |
}; | |
int vertexId = 0; | |
PolygonBuilder builder = new PolygonBuilder(mesh); | |
for (int face = 0; face < 6; face++) | |
{ | |
// Start defining a new polygon | |
builder.begin(); | |
for (int v = 0; v < 4; v++) | |
// The indice of vertice per each polygon | |
builder.addVertex(indices[vertexId++]); | |
// Finished one polygon | |
builder.end(); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Initialize control points | |
Vector4List controlPoints = new Vector4List(8); | |
controlPoints.add(new Vector4( -5.0, 0.0, 5.0, 1.0)); | |
controlPoints.add(new Vector4( 5.0, 0.0, 5.0, 1.0)); | |
controlPoints.add(new Vector4( 5.0, 10.0, 5.0, 1.0)); | |
controlPoints.add(new Vector4( -5.0, 10.0, 5.0, 1.0)); | |
controlPoints.add(new Vector4( -5.0, 0.0, -5.0, 1.0)); | |
controlPoints.add(new Vector4( 5.0, 0.0, -5.0, 1.0)); | |
controlPoints.add(new Vector4( 5.0, 10.0, -5.0, 1.0)); | |
controlPoints.add(new Vector4( -5.0, 10.0, -5.0, 1.0)); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Raw normal data | |
Vector4[] normals = new Vector4[] | |
{ | |
new Vector4(-0.577350258,-0.577350258, 0.577350258, 1.0), | |
new Vector4( 0.577350258,-0.577350258, 0.577350258, 1.0), | |
new Vector4( 0.577350258, 0.577350258, 0.577350258, 1.0), | |
new Vector4(-0.577350258, 0.577350258, 0.577350258, 1.0), | |
new Vector4(-0.577350258,-0.577350258,-0.577350258, 1.0), | |
new Vector4( 0.577350258,-0.577350258,-0.577350258, 1.0), | |
new Vector4( 0.577350258, 0.577350258,-0.577350258, 1.0), | |
new Vector4(-0.577350258, 0.577350258,-0.577350258, 1.0) | |
}; | |
// Call Common class create mesh using polygon builder method to set mesh instance | |
Mesh mesh = Common.createMeshUsingPolygonBuilder(); | |
VertexElementNormal elementNormal = (VertexElementNormal)mesh.createElement(VertexElementType.NORMAL, MappingMode.CONTROL_POINT, ReferenceMode.DIRECT); | |
// Copy the data to the vertex element | |
elementNormal.setData(normals); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// UVs | |
Vector4[] uvs = new Vector4[] | |
{ | |
new Vector4( 0.0, 1.0,0.0, 1.0), | |
new Vector4( 1.0, 0.0,0.0, 1.0), | |
new Vector4( 0.0, 0.0,0.0, 1.0), | |
new Vector4( 1.0, 1.0,0.0, 1.0) | |
}; | |
// Indices of the uvs per each polygon | |
int[] uvsId = new int[] | |
{ | |
0,1,3,2,2,3,5,4,4,5,7,6,6,7,9,8,1,10,11,3,12,0,2,13 | |
}; | |
// Call Common class create mesh using polygon builder method to set mesh instance | |
Mesh mesh = Common.createMeshUsingPolygonBuilder(); | |
// Create UVset | |
VertexElementUV elementUV = mesh.createElementUV(TextureMapping.DIFFUSE, MappingMode.POLYGON_VERTEX, ReferenceMode.INDEX_TO_DIRECT); | |
// Copy the data to the UV vertex element | |
elementUV.setData(uvs); | |
elementUV.setIndices(uvsId); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// The path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
// Initialize scene object | |
Scene scene = new Scene(); | |
scene.open(MyDir + "document.fbx"); | |
scene.getRootNode().accept(new NodeVisitor() { | |
@Override | |
public boolean call(Node node) { | |
Mesh mesh = (Mesh)node.getEntity(); | |
if (mesh != null) | |
{ | |
// Triangulate the mesh | |
Mesh newMesh = PolygonModifier.triangulate(mesh); | |
// Replace the old mesh | |
node.setEntity(newMesh); | |
} | |
return true; | |
} | |
}); | |
MyDir = MyDir + RunExamples.getOutputFilePath("document.fbx"); | |
scene.save(MyDir, FileFormat.FBX7400ASCII); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
License license = new License(); | |
license.setLicense("Aspose._3D.lic"); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
License license = new License(); | |
try(FileInputStream myStream = new FileInputStream("Aspose._3D.lic")) { | |
license.setLicense(myStream); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
License lic = new License(); | |
lic.setLicense(Program.class.getResourceAsStream("Aspose.3D.Java.lic")); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Initialize a Metered license class object | |
Metered metered = new Metered(); | |
// Set public and private keys | |
metered.setMeteredKey("your-public-key", "your-private-key"); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
License license = new License(); | |
license.setLicense("Aspose.3D.Java.lic"); | |
if (License.isLicenseSet()) { | |
System.out.println("License is Set!"); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// The path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
ColladaSaveOptions saveColladaopts = new ColladaSaveOptions(); | |
// Generates indented XML document | |
saveColladaopts.setIndented(true); | |
// The style of node transformation | |
saveColladaopts.setTransformStyle(ColladaTransformStyle.MATRIX); | |
// Configure the lookup paths to allow importer to find external dependencies. | |
saveColladaopts.getLookupPaths().add(MyDir); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// The path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
MyDir = MyDir + "document.fbx"; | |
// Create an object of the Scene class | |
Scene scene = new Scene(); | |
// Save 3D scene document | |
scene.save(MyDir, FileFormat.FBX7500ASCII); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// the path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
// detect format of 3D file | |
FileFormat inputFormat = FileFormat.detect(MyDir + "document.fbx"); | |
// display the file format | |
System.out.println("File Format: " + inputFormat.toString()); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// The code example uses the DummyFileSystem, so the material files are not created. | |
// The path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
// Initialize Scene object | |
Scene scene = new Scene(); | |
// Create a child node | |
scene.getRootNode().createChildNode("sphere", new Sphere()).setMaterial(new PhongMaterial()); | |
// Set saving options | |
ObjSaveOptions opt = new ObjSaveOptions(); | |
opt.setFileSystem(new DummyFileSystem()); | |
// Save 3D scene | |
scene.save(MyDir + "DiscardSavingMaterial_out.obj", opt); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// The path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
Discreet3DSLoadOptions loadOpts = new Discreet3DSLoadOptions(); | |
// Sets wheather to use the transformation defined in the first frame of animation track. | |
loadOpts.setApplyAnimationTransform(true); | |
// Flip the coordinate system | |
loadOpts.setFlipCoordinateSystem(true); | |
// Prefer to use gamma-corrected color if a 3ds file provides both original color and gamma-corrected color. | |
loadOpts.setGammaCorrectedColor(true); | |
// Configure the look up paths to allow importer to find external dependencies. | |
loadOpts.getLookupPaths().add(MyDir); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// The path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
// Initialize an object | |
Discreet3DSSaveOptions saveOpts = new Discreet3DSSaveOptions(); | |
// The start base for generating new name for duplicated names. | |
saveOpts.setDuplicatedNameCounterBase(2); | |
// The format of the duplicated counter. | |
saveOpts.setDuplicatedNameCounterFormat("NameFormat"); | |
// The separator between object's name and the duplicated counter. | |
saveOpts.setDuplicatedNameSeparator("Separator"); | |
// Allows to export cameras | |
saveOpts.setExportCamera(true); | |
// Allows to export light | |
saveOpts.setExportLight(true); | |
// Flip the coordinate system | |
saveOpts.setFlipCoordinateSystem(true); | |
// Prefer to use gamma-corrected color if a 3ds file provides both original color and gamma-corrected color. | |
saveOpts.setGammaCorrectedColor(true); | |
// Use high-precise color which each color channel will use 32bit float. | |
saveOpts.setHighPreciseColor(true); | |
// Configure the look up paths to allow importer to find external dependencies. | |
saveOpts.getLookupPaths().add(MyDir); | |
// Set the master scale | |
saveOpts.setMasterScale(1); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// The path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
// Initialize Scene object | |
Scene scene = new Scene(); | |
// Create a child node | |
scene.getRootNode().createChildNode("sphere", new Sphere()); | |
// Initialize .DRC saving options. | |
DracoSaveOptions opts = new DracoSaveOptions(); | |
// Quantization bits for position | |
opts.setPositionBits(14); | |
// Quantization bits for texture coordinate | |
opts.setTextureCoordinateBits(8); | |
// Quantization bits for vertex color | |
opts.setColorBits(10); | |
// Quantization bits for normal vectors | |
opts.setNormalBits(7); | |
// Set compression level | |
opts.setCompressionLevel(DracoCompressionLevel.OPTIMAL); | |
// Save Google Draco (.drc) file | |
scene.save(MyDir + "DRCSaveOptions_out.drc", opts); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// The path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
// Initialize an object | |
FBXSaveOptions saveOpts = new FBXSaveOptions(FileFormat.ASE); | |
// Generates the legacy material properties. | |
saveOpts.setExportLegacyMaterialProperties(true); | |
// Fold repeated curve data using FBX's animation reference count | |
saveOpts.setFoldRepeatedCurveData(true); | |
// Always generates material mapping information for geometries if the attached node contains materials. | |
saveOpts.setGenerateVertexElementMaterial(true); | |
// Configure the look up paths to allow importer to find external dependencies. | |
saveOpts.getLookupPaths().add(MyDir); | |
// Generates a video object for texture. | |
saveOpts.setVideoForTexture(true); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// The path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
// Initialize Scene class object | |
Scene scene = new Scene(); | |
// Set load options | |
GLTFLoadOptions loadOpt = new GLTFLoadOptions(); | |
// The default value is true, usually we don't need to change it. Aspose.3D will automatically flip the V/T texture coordinate during load and save. | |
loadOpt.setFlipTexCoordV(true); | |
scene.open( MyDir + "Duck.gltf", loadOpt); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// The path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
// Initialize Scene object | |
Scene scene = new Scene(); | |
// Create a child node | |
scene.getRootNode().createChildNode("sphere", new Sphere()); | |
// Set glTF saving options. The code example embeds all assets into the target file usually a glTF file comes with some dependencies, a bin file for model's vertex/indices, two .glsl files for vertex/fragment shaders | |
// Use opt.EmbedAssets to tells the Aspose.3D API to export scene and embed the dependencies inside the target file. | |
GLTFSaveOptions opt = new GLTFSaveOptions(FileContentType.ASCII); | |
opt.setEmbedAssets(true); | |
// Use KHR_materials_common extension to define the material, thus no GLSL files are generated. | |
opt.setUseCommonMaterials(true); | |
// Customize the name of the buffer file which defines model | |
opt.setBufferFile("mybuf.bin"); | |
// Save glTF file | |
scene.save(MyDir + "glTFSaveOptions_out.gltf", opt); | |
// Save a binary glTF file using KHR_binary_glTF extension | |
scene.save(MyDir + "glTFSaveOptions_out.glb", FileFormat.GLTF__BINARY); | |
// Developers may use saving options to create a binary glTF file using KHR_binary_glTF extension | |
GLTFSaveOptions opts = new GLTFSaveOptions(FileContentType.BINARY); | |
scene.save(MyDir + "Test_out.glb", opts); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// The path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
/* initialize a new 3D scene */ | |
Scene s = new Scene(); | |
Box box = new Box(); | |
PhongMaterial mat = new PhongMaterial(); | |
mat.setDiffuseColor(new Vector3(1, 0, 1)); | |
s.getRootNode().createChildNode("box1", box).setMaterial(mat); | |
GLTFSaveOptions opt = new GLTFSaveOptions(FileFormat.GLTF2); | |
//Custom material converter to convert PhongMaterial to PbrMaterial | |
opt.setMaterialConverter(new MaterialConverter() { | |
@Override | |
public Material call(Material material) { | |
PhongMaterial m = (PhongMaterial) material; | |
PbrMaterial ret = new PbrMaterial(); | |
ret.setAlbedo(m.getDiffuseColor()); | |
return ret; | |
} | |
}); | |
// save in GLTF 2.0 format | |
s.save(MyDir + "Non_PBRtoPBRMaterial_Out.gltf", opt); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// The path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
// Initialize an object | |
ObjLoadOptions loadObjOpts = new ObjLoadOptions(); | |
// Import materials from external material library file | |
loadObjOpts.setEnableMaterials(true); | |
// Flip the coordinate system. | |
loadObjOpts.setFlipCoordinateSystem(true); | |
// Configure the look up paths to allow importer to find external dependencies. | |
loadObjOpts.getLookupPaths().add(MyDir); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// The path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
// Initialize an object | |
ObjSaveOptions saveObjOpts = new ObjSaveOptions(); | |
// Import materials from external material library file | |
saveObjOpts.setEnableMaterials(true); | |
// Flip the coordinate system. | |
saveObjOpts.setFlipCoordinateSystem(true); | |
// Configure the look up paths to allow importer to find external dependencies. | |
saveObjOpts.getLookupPaths().add(MyDir); | |
// Serialize W component in model's vertex position | |
saveObjOpts.setSerializeW(true); | |
// Generate comments for each section | |
saveObjOpts.setVerbose(true); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// the path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
// initialize Scene class object | |
Scene scene = new Scene(); | |
// initialize an object | |
PlyLoadOptions loadPLYOpts = new PlyLoadOptions(); | |
// Flip the coordinate system. | |
loadPLYOpts.setFlipCoordinateSystem(true); | |
// load 3D Ply model | |
scene.open(MyDir + "vase-v2.ply", loadPLYOpts); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// the path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
// Initialize a Scene class object | |
Scene scene = new Scene(); | |
// Load an existing 3D document | |
scene.open(MyDir + "document.fbx"); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// The path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
// Load a 3D document into Aspose.3D | |
Scene scene = new Scene(); | |
// Open an existing 3D scene | |
scene.open(MyDir + "document.fbx"); | |
// Save Scene to a stream | |
try (MemoryStream dstStream = new MemoryStream()) { | |
scene.save(dstStream, FileFormat.FBX7500ASCII); | |
} | |
// Save Scene to a local path | |
scene.save(MyDir + "output_out.fbx", FileFormat.FBX7500ASCII); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// The code example uses the LocalFileSystem class to save dependencies to the local directory. | |
// The path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
// Initialize Scene object | |
Scene scene = new Scene(); | |
// Create a child node | |
scene.getRootNode().createChildNode("sphere", new Sphere()).setMaterial(new PhongMaterial()); | |
// Set saving options | |
ObjSaveOptions opt = new ObjSaveOptions(); | |
opt.setFileSystem(new LocalFileSystem(MyDir)); | |
// Save 3D scene | |
scene.save(MyDir + "SavingDependenciesInLocalDirectory_out.obj", opt); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// The code example uses the MemoryFileSystem to intercepts the dependencies writing. | |
// The path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
// Initialize Scene object | |
Scene scene = new Scene(); | |
// Create a child node | |
scene.getRootNode().createChildNode("sphere", new Sphere()).setMaterial(new PhongMaterial()); | |
// Set saving options | |
ObjSaveOptions opt = new ObjSaveOptions(); | |
MemoryFileSystem mfs = new MemoryFileSystem(); | |
opt.setFileSystem(mfs); | |
// Save 3D scene | |
scene.save(MyDir + "SavingDependenciesInMemoryFileSystem_out.obj", opt); | |
// Get the test.mtl file content | |
byte[] mtl = mfs.getFileContent(MyDir + "SavingDependenciesInMemoryFileSystem_out.mtl"); | |
Files.write(Paths.get(MyDir, "Material.mtl"), mtl); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// The path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
// Initialize an object | |
STLLoadOptions loadSTLOpts = new STLLoadOptions(); | |
// Flip the coordinate system. | |
loadSTLOpts.setFlipCoordinateSystem(true); | |
// Configure the look up paths to allow importer to find external dependencies. | |
loadSTLOpts.getLookupPaths().add(MyDir); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// The path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
// Initialize an object | |
STLSaveOptions saveSTLOpts = new STLSaveOptions(); | |
// Flip the coordinate system. | |
saveSTLOpts.setFlipCoordinateSystem(true); | |
// Configure the look up paths to allow importer to find external dependencies. | |
saveSTLOpts.getLookupPaths().add(MyDir); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// The path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
// Initialize an object | |
U3DLoadOptions loadU3DOpts = new U3DLoadOptions(); | |
// Flip the coordinate system. | |
loadU3DOpts.setFlipCoordinateSystem(true); | |
// Configure the look up paths to allow importer to find external dependencies. | |
loadU3DOpts.getLookupPaths().add(MyDir); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// The path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
// Initialize an object | |
U3DSaveOptions saveU3DOptions = new U3DSaveOptions(); | |
// Export normal data. | |
saveU3DOptions.setExportNormals(true); | |
// Export the texture coordinates. | |
saveU3DOptions.setExportTextureCoordinates(true); | |
// Export the vertex diffuse color. | |
saveU3DOptions.setExportVertexDiffuse(true); | |
// Export vertex specular color | |
saveU3DOptions.setExportVertexSpecular(true); | |
// Flip the coordinate system. | |
saveU3DOptions.setFlipCoordinateSystem(true); | |
// Configure the look up paths to allow importer to find external dependencies. | |
saveU3DOptions.getLookupPaths().add(MyDir); | |
// Compress the mesh data | |
saveU3DOptions.setMeshCompression(true); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// the path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
// initialize Scene class object | |
Scene scene = new Scene(); | |
// initialize an object | |
XLoadOptions loadXOpts = new XLoadOptions(FileContentType.ASCII); | |
// flip the coordinate system. | |
loadXOpts.setFlipCoordinateSystem(true); | |
// load 3D X file | |
scene.open(MyDir + "warrior.x", loadXOpts); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// The path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
MyDir = MyDir + "test.fbx"; | |
// Load a 3D file | |
Scene scene = new Scene(MyDir); | |
// Split all meshes | |
PolygonModifier.splitMesh(scene, SplitMeshPolicy.CLONE_DATA); | |
// Save file | |
MyDir = RunExamples.getDataDir() + RunExamples.getOutputFilePath("test-splitted.fbx"); | |
scene.save(MyDir, FileFormat.FBX7500ASCII); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Create a mesh of box(A box is composed by 6 planes) | |
Mesh box = (new Box()).toMesh(); | |
// Create a material element on this mesh | |
VertexElementMaterial mat = (VertexElementMaterial) box.createElement(VertexElementType.MATERIAL, MappingMode.POLYGON, ReferenceMode.INDEX); | |
// and specify different material index for each plane | |
mat.setIndices(new int[]{0, 1, 2, 3, 4, 5}); | |
// Now split it into 6 sub meshes, we specified 6 different materials on each plane, each plane will become a sub mesh. | |
// We used the CloneData policy, each plane will has the same control point information or control point-based vertex element information. | |
Mesh[] planes = PolygonModifier.splitMesh(box, SplitMeshPolicy.CLONE_DATA); | |
mat.getIndices().clear(); | |
mat.setIndices(new int[]{0, 0, 0, 1, 1, 1}); | |
// Now split it into 2 sub meshes, first mesh will contains 0/1/2 planes, and second mesh will contains the 3/4/5th planes. | |
// We used the CompactData policy, each plane will has its own control point information or control point-based vertex element information. | |
planes = PolygonModifier.splitMesh(box, SplitMeshPolicy.COMPACT_DATA); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Initialize a 3D scene | |
Scene scene = new Scene(); | |
// Set application/tool name | |
scene.getAssetInfo().setApplicationName("Egypt"); | |
// Set application/tool vendor name | |
scene.getAssetInfo().setApplicationVendor("Manualdesk"); | |
// We use ancient egyption measurement unit Pole | |
scene.getAssetInfo().setUnitName("pole"); | |
// One Pole equals to 60cm | |
scene.getAssetInfo().setUnitScaleFactor(0.6); | |
// The path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
MyDir = MyDir + RunExamples.getOutputFilePath("InformationToScene.fbx"); | |
// Save scene to 3D supported file formats | |
scene.save(MyDir, FileFormat.FBX7500ASCII); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// The path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
// Initialize a Scene object | |
Scene scene = new Scene(); | |
// Create a Box model | |
scene.getRootNode().createChildNode("box", new Box()); | |
// Create a Cylinder model | |
scene.getRootNode().createChildNode("cylinder", new Cylinder()); | |
// Save drawing in the FBX format | |
MyDir = MyDir + RunExamples.getOutputFilePath("test.fbx"); | |
scene.save(MyDir, FileFormat.FBX7500ASCII); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// The path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
// load a 3D file | |
Scene scene = new Scene(MyDir + "test.fbx"); | |
/* | |
* 3D format demonstration is simple | |
* | |
* struct File { | |
* MeshBlock blocks[]; | |
* }; | |
* | |
* struct Vertex { | |
* float x; | |
* float y; | |
* float z; | |
* }; | |
* | |
* struct Triangle { | |
* int a; | |
* int b; | |
* int c; | |
* }; | |
* | |
* struct MeshBlock { | |
* int numControlPoints; | |
* int numTriangles; | |
* Vertex vertices[numControlPoints]; | |
* Triangle faces[numTriangles]; | |
* }; | |
*/ | |
// open file for writing in binary mode | |
try (DataOutputStream writer = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(MyDir + "Save3DMeshesInCustomBinaryFormat_out")))) | |
{ | |
// visit each descent nodes | |
scene.getRootNode().accept(new NodeVisitor(){ | |
@Override | |
public boolean call(Node node) { | |
try { | |
for (Entity entity : node.getEntities()) { | |
// only convert meshes, lights/camera and other stuff will be ignored | |
if (!(entity instanceof IMeshConvertible)) | |
continue; | |
Mesh m = ((IMeshConvertible) entity).toMesh(); | |
List<Vector4> controlPoints = m.getControlPoints(); | |
// triangulate the mesh, so triFaces will only store triangle indices | |
int[][] triFaces = PolygonModifier.triangulate(controlPoints, m.getPolygons()); | |
// gets the global transform matrix | |
Matrix4 transform = node.getGlobalTransform().getTransformMatrix(); | |
// write number of control points and triangle indices | |
writer.writeInt(controlPoints.size()); | |
writer.writeInt(triFaces.length); | |
// write control points | |
for (int i = 0; i < controlPoints.size(); i++) { | |
// calculate the control points in world space and save them to file | |
Vector4 cp = Matrix4.mul(transform, controlPoints.get(i)); | |
writer.writeFloat((float) cp.x); | |
writer.writeFloat((float) cp.y); | |
writer.writeFloat((float) cp.z); | |
} | |
// write triangle indices | |
for (int i = 0; i < triFaces.length; i++) { | |
writer.writeInt(triFaces[i][0]); | |
writer.writeInt(triFaces[i][1]); | |
writer.writeInt(triFaces[i][2]); | |
} | |
} | |
} catch(Exception e) { | |
e.printStackTrace(); | |
} | |
return true; | |
} | |
}); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// The path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
// Load an existing 3D file | |
Scene scene = new Scene( MyDir + "document.fbx"); | |
// Triangulate a scene | |
PolygonModifier.buildTangentBinormal(scene); | |
// Save 3D scene | |
scene.save(MyDir + "BuildTangentAndBinormalData_out.fbx", FileFormat.FBX7400ASCII); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Initialize scene object | |
Scene scene = new Scene(); | |
// Initialize Node class object | |
Node cubeNode = new Node("box"); | |
// Get mesh of the Box | |
Mesh box = (new Box()).toMesh(); | |
// Create a customized vertex layout | |
VertexDeclaration vd = new VertexDeclaration(); | |
VertexField position = vd.addField(VertexFieldDataType.F_VECTOR4, VertexFieldSemantic.POSITION); | |
vd.addField(VertexFieldDataType.F_VECTOR3, VertexFieldSemantic.NORMAL); | |
// Get a triangle mesh | |
TriMesh triMesh = TriMesh.fromMesh(box); | |
// ExEnd:ConvertBoxMeshtoTriangleMeshCustomMemoryLayout | |
// Point node to the Mesh geometry | |
cubeNode.setEntity(box); | |
// Add Node to a scene | |
scene.getRootNode().getChildNodes().add(cubeNode); | |
// The path to the documents directory. | |
String MyDir = RunExamples.getDataDir() + RunExamples.getOutputFilePath("BoxToTriangleMeshCustomMemoryLayoutScene.fbx"); | |
// Save 3D scene in the supported file formats | |
scene.save(MyDir, FileFormat.FBX7400ASCII); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Initialize object by Box class | |
IMeshConvertible convertible = new Box(); | |
// Convert a Box to Mesh | |
Mesh mesh = convertible.toMesh(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Initialize object by Cylinder class | |
IMeshConvertible convertible = new Cylinder(); | |
// Convert a Cylinder to Mesh | |
Mesh mesh = convertible.toMesh(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Initialize object by Plane class | |
IMeshConvertible convertible = new Plane(); | |
// Convert a Plane to Mesh | |
Mesh mesh = convertible.toMesh(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Initialize object by Sphere class | |
IMeshConvertible convertible = new Sphere(); | |
// Convert a Sphere to Mesh | |
Mesh mesh = convertible.toMesh(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Initialize object by Torus class | |
IMeshConvertible convertible = new Torus(); | |
// Convert a Torus to Mesh | |
Mesh mesh = convertible.toMesh(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// The path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
// Create a sphere | |
Sphere sphere = new Sphere(); | |
// Encode the sphere to Google Draco raw data using optimal compression level. | |
DracoSaveOptions opt = new DracoSaveOptions(); | |
opt.setCompressionLevel(DracoCompressionLevel.OPTIMAL); | |
byte[] b = FileFormat.DRACO.encode(sphere.toMesh(), opt); | |
// Save the raw bytes to file | |
Files.write(Paths.get(MyDir, "SphereMeshtoDRC_Out.drc"), b); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// The path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
// Load a 3ds file, 3ds file doesn't have normal data, but it has smoothing group | |
Scene s = new Scene(MyDir + "camera.3ds"); | |
// Visit all nodes and create normal data for all meshes | |
s.getRootNode().accept(new NodeVisitor() { | |
@Override | |
public boolean call(Node node) { | |
Mesh mesh = (Mesh)node.getEntity(); | |
if (mesh != null) | |
{ | |
VertexElementNormal normals = PolygonModifier.generateNormal(mesh); | |
mesh.addElement(normals); | |
} | |
return true; | |
} | |
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// The path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
// Load an existing 3D file | |
Scene scene = new Scene(MyDir + "document.fbx"); | |
// Triangulate a scene | |
PolygonModifier.triangulate(scene); | |
// Save 3D scene | |
scene.save(MyDir + "triangulated_out.fbx", FileFormat.FBX7400ASCII); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Gist for Aspose.3D for Java |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-Jav | |
// Create a Scene | |
Scene scene = new Scene(); | |
// Create a cylinder | |
Cylinder fan = new Cylinder(2, 2, 10, 20, 1, false); | |
// Set GenerateGanCylinder to true | |
fan.setGenerateFanCylinder(true); | |
// Set ThetaLength | |
fan.setThetaLength(MathUtils.toRadian(270.0)); | |
// Create ChildNode | |
scene.getRootNode().createChildNode(fan).getTransform().setTranslation(10, 0, 0); | |
// Create a cylinder without a fan | |
Cylinder nonfan = new Cylinder(2, 2, 10, 20, 1, false); | |
// Create ChildNode | |
scene.getRootNode().createChildNode(nonfan); | |
// Save scene | |
scene.save(RunExamples.getDataDir()+ "CreateFanCylinder.obj", FileFormat.WAVEFRONTOBJ); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-Java | |
// Create a scene | |
Scene scene = new Scene(); | |
// Initialize cylinder | |
Cylinder cylinder1 = new Cylinder(2, 2, 10, 20, 1, false); | |
// Set OffsetTop | |
cylinder1.setOffsetTop(new Vector3(5, 3, 0)); | |
// Create ChildNode | |
scene.getRootNode().createChildNode(cylinder1).getTransform().setTranslation(10, 0, 0); | |
// Initialize second cylinder without customized OffsetTop | |
Cylinder cylinder2 = new Cylinder(2, 2, 10, 20, 1, false); | |
// Create ChildNode | |
scene.getRootNode().createChildNode(cylinder2); | |
// Save | |
scene.save(RunExamples.getDataDir()+ "CustomizedOffsetTopCylinder.obj", FileFormat.WAVEFRONTOBJ); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-Java | |
// Create a scene | |
Scene scene = new Scene(); | |
// Create cylinder 1 | |
Cylinder cylinder1 = new Cylinder(2, 2, 10, 20, 1, false); | |
// Customized shear bottom for cylinder 1 | |
cylinder1.setShearBottom(new Vector2(0, 0.83));// shear 47.5deg in xy plane(z-axis) | |
// Add cylinder 1 to the scene | |
scene.getRootNode().createChildNode(cylinder1).getTransform().setTranslation(10, 0, 0); | |
// Create cylinder 2 | |
Cylinder cylinder2 = new Cylinder(2, 2, 10, 20, 1, false); | |
// Add cylinder to without a ShearBottom to the scene | |
scene.getRootNode().createChildNode(cylinder2); | |
// Save scene | |
scene.save(RunExamples.getDataDir()+ "CustomizedShearBottomCylinder.obj", FileFormat.WAVEFRONTOBJ); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-Java | |
// Initialize scene object | |
Scene scene = new Scene(); | |
// Call Common class create mesh using polygon builder method to set mesh instance | |
Mesh mesh = Common.createMeshUsingPolygonBuilder(); | |
// Each cube node has their own translation | |
Node cube1 = scene.getRootNode().createChildNode("cube1", mesh); | |
// Find translation property on node's transform object | |
Property translation = cube1.getTransform().findProperty("Translation"); | |
// Create a bind point based on translation property | |
BindPoint bindPoint = new BindPoint(scene, translation); | |
// Create the animation curve on X component of the scale | |
KeyframeSequence kfs = new KeyframeSequence(); | |
// Move node's translation to (10, 0, 10) at 0 sec using bezier interpolation | |
kfs.add(0, 10.0f, Interpolation.BEZIER); | |
// Move node's translation to (20, 0, -10) at 3 sec | |
kfs.add(3, 20.0f, Interpolation.BEZIER); | |
// Move node's translation to (30, 0, 0) at 5 sec | |
kfs.add(5, 30.0f, Interpolation.LINEAR); | |
bindPoint.bindKeyframeSequence("X", kfs); | |
kfs = new KeyframeSequence(); | |
// Move node's translation to (10, 0, 10) at 0 sec using bezier interpolation | |
kfs.add(0, 10.0f, Interpolation.BEZIER); | |
// Move node's translation to (20, 0, -10) at 3 sec | |
kfs.add(3, -10.0f, Interpolation.BEZIER); | |
// Move node's translation to (30, 0, 0) at 5 sec | |
kfs.add(5, 0.0f, Interpolation.LINEAR); | |
bindPoint.bindKeyframeSequence("Z", kfs); | |
// The path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
MyDir = MyDir + RunExamples.getOutputFilePath("PropertyToDocument.fbx"); | |
// Save 3D scene in the supported file formats | |
scene.save(MyDir, FileFormat.FBX7500ASCII); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-Java | |
// Initialize node | |
Node n = new Node(); | |
// Get Geometric Translation | |
n.getTransform().setGeometricTranslation(new Vector3(10, 0, 0)); | |
// The first Console.WriteLine will output the transform matrix that includes the geometric transformation | |
// while the second one will not. | |
System.out.println(n.evaluateGlobalTransform(true)); | |
System.out.println(n.evaluateGlobalTransform(false)); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-Java | |
// The path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
// Initialize the base profile to be extruded | |
RectangleShape profile = new RectangleShape(); | |
profile.setRoundingRadius(0.3); | |
// Create a scene | |
Scene scene = new Scene(); | |
// Create left node | |
Node left = scene.getRootNode().createChildNode(); | |
// Create right node | |
Node right = scene.getRootNode().createChildNode(); | |
left.getTransform().setTranslation(new Vector3(5, 0, 0)); | |
// If Center property is true, the extrusion range is from -Height/2 to Height/2, otherwise the extrusion is from 0 to Height | |
// Perform linear extrusion on left node using center and slices property | |
left.createChildNode(new LinearExtrusion(profile, 2) {{ setCenter(false); setSlices(3); }}); | |
// Set ground plane for reference | |
left.createChildNode(new Box(0.01, 3, 3)); | |
// Perform linear extrusion on left node using center and slices property | |
right.createChildNode(new LinearExtrusion(profile, 2) {{ setCenter(true); setSlices(3); }}); | |
// Set ground plane for reference | |
right.createChildNode(new Box(0.01, 3, 3)); | |
// Save 3D scene | |
scene.save(MyDir + "CenterInLinearExtrusion.obj", FileFormat.WAVEFRONTOBJ); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-Java | |
// The path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
// Initialize the base profile to be extruded | |
RectangleShape profile = new RectangleShape(); | |
profile.setRoundingRadius(0.3); | |
// Create a scene | |
Scene scene = new Scene(); | |
// Create left node | |
Node left = scene.getRootNode().createChildNode(); | |
// Create right node | |
Node right = scene.getRootNode().createChildNode(); | |
left.getTransform().setTranslation(new Vector3(5, 0, 0)); | |
// Direction property defines the direction of the extrusion. | |
// Perform linear extrusion on left node using twist and slices property | |
left.createChildNode(new LinearExtrusion(profile, 10) {{ setTwist(360); setSlices(100); }}); | |
// Perform linear extrusion on right node using twist, slices, and direction property | |
right.createChildNode(new LinearExtrusion(profile, 10) {{ setTwist(360); setSlices(100); setDirection(new Vector3(0.3, 0.2, 1));}}); | |
// Save 3D scene | |
scene.save(MyDir + "DirectionInLinearExtrusion.obj", FileFormat.WAVEFRONTOBJ); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-Java | |
// The path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
// Initialize the base shape to be extruded | |
// Initialize the base profile to be extruded | |
RectangleShape profile = new RectangleShape(); | |
profile.setRoundingRadius(0.3); | |
// Perform Linear extrusion by passing a 2D shape as input and extend the shape in the 3rd dimension | |
LinearExtrusion extrusion = new LinearExtrusion(profile, 10) {{ setSlices(100); setCenter(true); setTwist(360); setTwistOffset(new Vector3(10, 0, 0));}}; | |
extrusion.setSlices(100); | |
extrusion.setCenter(true); | |
extrusion.setTwist(360); | |
extrusion.setTwistOffset(new Vector3(10, 0, 0)); | |
// Create a scene | |
Scene scene = new Scene(); | |
// Create a child node by passing extrusion | |
scene.getRootNode().createChildNode(extrusion); | |
// Save 3D scene | |
scene.save(MyDir + "LinearExtrusion.obj", FileFormat.WAVEFRONTOBJ); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-Java | |
// The path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
// Initialize the base profile to be extruded | |
RectangleShape profile = new RectangleShape(); | |
profile.setRoundingRadius(0.3); | |
// Create a scene | |
Scene scene = new Scene(); | |
// Create left node | |
Node left = scene.getRootNode().createChildNode(); | |
// Create right node | |
Node right = scene.getRootNode().createChildNode(); | |
left.getTransform().setTranslation(new Vector3(5, 0, 0)); | |
// Slices parameter defines the number of intermediate points along the path of the extrusion | |
// Perform linear extrusion on left node using slices property | |
left.createChildNode(new LinearExtrusion(profile, 2) {{setSlices(2);}}); | |
// Perform linear extrusion on right node using slices property | |
right.createChildNode(new LinearExtrusion(profile, 2) {{setSlices(10);}}); | |
// Save 3D scene | |
scene.save(MyDir + "SlicesInLinearExtrusion.obj", FileFormat.WAVEFRONTOBJ); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-Java | |
// The path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
// Initialize the base profile to be extruded | |
RectangleShape profile = new RectangleShape(); | |
profile.setRoundingRadius(0.3); | |
// Create a scene | |
Scene scene = new Scene(); | |
// Create left node | |
Node left = scene.getRootNode().createChildNode(); | |
// Create right node | |
Node right = scene.getRootNode().createChildNode(); | |
left.getTransform().setTranslation(new Vector3(5, 0, 0)); | |
// Twist property defines the degree of the rotation while extruding the profile | |
// Perform linear extrusion on left node using twist and slices property | |
left.createChildNode(new LinearExtrusion(profile, 10) {{ setTwist(0); setSlices(100); }}); | |
// Perform linear extrusion on right node using twist and slices property | |
right.createChildNode(new LinearExtrusion(profile, 10) {{ setTwist(90); setSlices(100); }}); | |
// Save 3D scene | |
scene.save(MyDir + "TwistInLinearExtrusion.obj", FileFormat.WAVEFRONTOBJ); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-Java | |
// The path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
// Initialize the base profile to be extruded | |
RectangleShape profile = new RectangleShape(); | |
profile.setRoundingRadius(0.3); | |
// Create a scene | |
Scene scene = new Scene(); | |
// Create left node | |
Node left = scene.getRootNode().createChildNode(); | |
// Create right node | |
Node right = scene.getRootNode().createChildNode(); | |
left.getTransform().setTranslation(new Vector3(5, 0, 0)); | |
// TwistOffset property is the translate offset while rotating the extrusion. | |
// Perform linear extrusion on left node using twist and slices property | |
left.createChildNode(new LinearExtrusion(profile, 10) {{ setTwist(360); setSlices(100); }}); | |
// Perform linear extrusion on right node using twist, twist offset and slices property | |
right.createChildNode(new LinearExtrusion(profile, 10) {{setTwist(360); setSlices(100); setTwistOffset(new Vector3(3, 0, 0));}}); | |
// Save 3D scene | |
scene.save(MyDir + "TwistOffsetInLinearExtrusion.obj", FileFormat.WAVEFRONTOBJ); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-Java | |
String dataDir = RunExamples.getDataDir(); | |
//This will output all properties defined in GlobalSettings in FBX file. | |
Scene scene = new Scene(); | |
FBXLoadOptions opt = new FBXLoadOptions(); | |
opt.setKeepBuiltinGlobalSettings(true); | |
scene.open(dataDir + "test.FBX", opt); | |
for(Property property:scene.getRootNode().getAssetInfo().getProperties()) | |
{ | |
System.out.println(property); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-Java | |
String dataDir = RunExamples.getDataDir(); | |
Scene scene = new Scene(dataDir + "att-test.rvm"); | |
FileFormat.RVM_BINARY.loadAttributes(scene, dataDir + "att-test.att"); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-Java | |
// Initialize a scene | |
Scene scene = new Scene(); | |
// Initialize a node | |
Node node = scene.getRootNode().createChildNode(new Cylinder()); | |
// Set child node properites | |
LambertMaterial mat = new LambertMaterial(); | |
mat.setDiffuseColor(new Vector3(0.34,0.59, 0.41)); | |
node.setMaterial(mat); | |
Light light = new Light(); | |
light.setLightType(LightType.POINT); | |
scene.getRootNode().createChildNode(light).getTransform().setTranslation(10, 0, 10); | |
// Initialize HTML5SaveOptions | |
HTML5SaveOptions opt = new HTML5SaveOptions(); | |
// Turn off the grid | |
opt.setShowGrid(false); | |
//Turn off the user interface | |
opt.setShowUI(false); | |
scene.save(RunExamples.getDataDir() + "html5SaveOption.html", FileFormat.HTML5); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-Java | |
// Initialize 3D scene | |
Scene scene = new Scene(new Sphere()); | |
// Initialize GLTFSaveOptions | |
GLTFSaveOptions opt = new GLTFSaveOptions(FileFormat.GLTF2); | |
// opt.prettyPrint = true; //Old code | |
// The JSON content of GLTF file is indented for human reading, default value is false | |
// Use setter to change this configuration. | |
opt.setPrettyPrint(true); | |
// Save 3D Scene | |
scene.save(RunExamples.getDataDir() + "prettyPrintInGltfSaveOption.gltf", opt); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-Java | |
String dataDir = RunExamples.getDataDir(); | |
Scene scene = new Scene(); | |
Node node = scene.getRootNode().createChildNode("Box", new Box()); | |
node.setProperty("rvm:Refno", "=3462123"); | |
node.setProperty("rvm:Description", "This is the description of the box"); | |
//The RVM attribute's prefix is rvm:, all properties that starts with rvm: will be exported to .att file(the prefix will be removed) | |
RvmSaveOptions opt = new RvmSaveOptions(); | |
opt.setAttributePrefix( "rvm:"); | |
opt.setExportAttributes(true); | |
scene.save(dataDir + "test.rvm", opt); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-Java | |
// Initialize Mesh | |
Mesh mesh = new Mesh(); | |
//The old CreatePolygon needs to create a temporary array for holding the face indices | |
//mesh.createPolygon(new int[] { 0, 1, 2 }); | |
//The new overloads doesn't need extra allocation, and it's optimized internally. | |
mesh.createPolygon(0, 1, 2); | |
//Or You can create a polygon using 4 vertices(quad) | |
//mesh.CreatePolygon(0, 1, 2, 3); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-Java | |
// initialize a scene | |
Scene scene = new Scene(); | |
// initialize a Sphere | |
Sphere sphere = new Sphere(); | |
// set radius | |
sphere.setRadius(10); | |
// add sphere to the scene | |
scene.getRootNode().createChildNode(sphere); | |
// save scene | |
scene.save("sphere.obj", FileFormat.WAVEFRONTOBJ); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-Java | |
//Create a scene for testing | |
Scene s = new Scene(); | |
// Create a child node | |
Node a = s.getRootNode().createChildNode("a"); | |
// Create a sub-child node | |
a.createChildNode("a1"); | |
// Create a sub-child node | |
a.createChildNode("a2"); | |
// Create a child node | |
s.getRootNode().createChildNode("b"); | |
// Create a child node | |
Node c = s.getRootNode().createChildNode("c"); | |
// Create a sub-child node | |
c.createChildNode("c1").addEntity(new Camera("cam")); | |
// Create a sub-child node | |
c.createChildNode("c2").addEntity(new Light("light")); | |
/* | |
The hierarchy of the scene looks like: | |
- Root | |
- a | |
- a1 | |
- a2 | |
- b | |
- c | |
- c1 | |
- cam | |
- c2 | |
- light | |
*/ | |
//select objects that has type Camera or name is 'light' whatever it's located. | |
List<A3DObject> objects = s.getRootNode().selectObjects("//*[(@Type = 'Camera') or (@Name = 'light')]"); | |
//Select single camera object under the child nodes of node named 'c' under the root node | |
A3DObject c1 = s.getRootNode().selectSingleObject("/c/*/<Camera>"); | |
// Select node named 'a1' under the root node, even if the 'a1' is not a directly child node of the | |
A3DObject obj = s.getRootNode().selectSingleObject("a1"); | |
//Select the node itself, since the '/' is selected directly on the root node, so the root node is selected. | |
obj = s.getRootNode().selectSingleObject("/"); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-Java | |
PointCloud pointCloud = (PointCloud) FileFormat.DRACO.decode(RunExamples.getDataDir() + "point_cloud_no_qp.drc"); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-Java | |
Geometry geom = FileFormat.PLY.decode(RunExamples.getDataDir() + "sphere.ply"); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-Java | |
FileFormat.DRACO.encode(new Sphere(), RunExamples.getDataDir() + "sphere.drc"); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-Java | |
FileFormat.PLY.encode(new Sphere(), RunExamples.getDataDir() + "sphere.ply"); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-Java | |
DracoSaveOptions opt = new DracoSaveOptions(); | |
opt.setPointCloud(true); | |
FileFormat.DRACO.encode(new Sphere(), RunExamples.getDataDir()+"sphere.drc", opt); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-Java | |
// Initialize Scene | |
Scene scene = new Scene(new Sphere()); | |
// Initialize ObjSaveOptions | |
ObjSaveOptions opt = new ObjSaveOptions(); | |
// To export 3D scene as point cloud setPointCould | |
opt.setPointCloud(true); | |
// Save | |
scene.save(RunExamples.getDataDir()+ "export3DSceneAsPointCloud.obj", opt); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-Java | |
PlySaveOptions opt = new PlySaveOptions(); | |
opt.setPointCloud(true); | |
FileFormat.PLY.encode(new Sphere(),RunExamples.getDataDir() + "sphere.ply", opt); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-Java | |
// The path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
Scene scene = new Scene(); | |
//since all primitive entities in Aspose.3D will have builtin UV generation | |
//here we manually remove it to assume we have a mesh without UV data | |
Mesh mesh = (new Box()).toMesh(); | |
mesh.getVertexElements().remove(mesh.getElement(VertexElementType.UV)); | |
//then we can manually generate UV for it | |
VertexElement uv = PolygonModifier.generateUV(mesh); | |
//generated UV data is not associated with the mesh, we should manually do this | |
mesh.addElement(uv); | |
//put it to the scene | |
Node node = scene.getRootNode().createChildNode(mesh); | |
//then save it | |
scene.save(MyDir + "test.obj", FileFormat.WAVEFRONTOBJ); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-Java | |
// The path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
// Initialize Scene | |
Scene scene = new Scene(); | |
// Initialize Plane | |
Plane plane = new Plane(); | |
// Set Vector | |
plane.setUp(new Vector3(1, 1, 3)); | |
scene.getRootNode().createChildNode(plane); | |
//This will generate a plane that has customized orientation | |
scene.save(MyDir+"ChangePlaneOrientation.obj", FileFormat.WAVEFRONTOBJ); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-Java | |
// The path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
Scene scene = new Scene(); | |
Box box = new Box(); | |
Transform tr = scene.getRootNode().createChildNode(box).getTransform(); | |
tr.setScale(new Vector3(12, 12, 12)); | |
tr.setTranslation(new Vector3(10, 0, 0)); | |
tr = scene.getRootNode().createChildNode(box).getTransform(); | |
tr.setScale(new Vector3(5, 5, 5)); | |
tr.setEulerAngles(new Vector3(50, 10, 0)); | |
scene.getRootNode().createChildNode(); | |
scene.getRootNode().createChildNode().createChildNode(box); | |
scene.getRootNode().createChildNode().createChildNode(box); | |
AMFSaveOptions opt = new AMFSaveOptions(); | |
opt.setEnableCompression(false); | |
scene.save(MyDir + "test.amf", opt); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-Java | |
String dataDir = RunExamples.getDataDir(); | |
Scene scene = new Scene(dataDir+ "EmbeddedTexture.fbx"); | |
Material material = scene.getRootNode().getChildNodes().get(0).getMaterial(); | |
PropertyCollection props = material.getProperties(); | |
//List all properties using for loop | |
for (Property prop:props) | |
{ | |
System.out.println("Name" + prop.getName() + " Value = " + prop.getValue()); | |
} | |
//or using ordinal for loop | |
for (int i = 0; i < props.size(); i++) | |
{ | |
Property prop = props.get(i); | |
System.out.println("Name" + prop.getName() + " Value = " + prop.getValue()); | |
} | |
//Get property value by name | |
Object diffuse = (Vector3)props.get("Diffuse"); | |
System.out.println(diffuse); | |
//modify property value by name | |
props.set("Diffuse", new Vector3(1, 0, 1)); | |
//Get property instance by name | |
Property pdiffuse = props.findProperty("Diffuse"); | |
System.out.println(pdiffuse); | |
//Since Property is also inherited from A3DObject | |
//It's possible to get the property of the property | |
System.out.println("Property flags = " + pdiffuse.getProperty("flags")); | |
//and some properties that only defined in FBX file: | |
System.out.println("Label = " + pdiffuse.getProperty("label")); | |
System.out.println("Type Name = " + pdiffuse.getProperty("typeName")); | |
//so traversal on property's property is possible | |
for (Property pp: pdiffuse.getProperties()) | |
{ | |
System.out.println("Diffuse. " + pp.getName() + " = " + pp.getValue()); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-Java | |
// The path to the documents directory. | |
String MyDir = RunExamples.getDataDir(); | |
// initialize a scene | |
Scene scene = new Scene(); | |
// open Virtual Reality Modeling Language (VRML) file format | |
scene.open( MyDir + "test.wrl"); | |
// work with VRML file format... |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment