Material and PbrMaterial — Aspose.3D FOSS for Java

FbxSaveOptions: com.aspose.threed.shading (aspose-3d-foss)

Aspose.3D FOSS for Java은 두 개의 재질 클래스를 제공합니다:

  • Material: 모든 재질 유형의 추상 기본 클래스입니다. 이름과 숫자 및 색상 매개변수를 위한 속성 컬렉션을 제공합니다.
  • PbrMaterial: 금속성, 거칠기, 알베도 및 방사 속성을 갖는 물리 기반 렌더링(PBR) 재질입니다. glTF 2.0 및 기타 PBR 지원 포맷에서 사용됩니다.

재질은 a에 할당됩니다 Node 를 통해 node.setMaterial(material).


FbxSaveOptions

public abstract class Material extends A3DObject

FbxSaveOptions

A3DObject -> Material

Material 는 모든 재질 유형의 추상 기본 클래스입니다. 이름 속성과 a를 제공합니다 Properties 사용자 정의 메타데이터를 위한 컬렉션입니다. 직접 인스턴스화하지 마십시오 Material 직접; 사용 PbrMaterial 대신.


PbrMaterial

public class PbrMaterial extends Material

FbxSaveOptions

A3DObject -> Material -> PbrMaterial

PBR(Physically Based Rendering) 재질. glTF 2.0 및 기타 PBR 지원 포맷에서 사용됩니다. 에 할당됩니다 Node 을 통해 node.setMaterial(material).

FbxSaveOptions

PbrMaterial()
PbrMaterial(String name)
PbrMaterial(String name, Vector4 albedo)

FbxSaveOptions

FbxSaveOptionsFbxSaveOptionsFbxSaveOptionsFbxSaveOptionsFbxSaveOptions
albedoVector4getAlbedo()setAlbedo(Vector4)표면의 기본 색상(알베도)을 RGBA로 표시합니다. 기본값 null.
metallicFactordoublegetMetallicFactor()setMetallicFactor(double)금속성 기여도: 0.0 = 완전 유전체, 1.0 = 완전 금속.
roughnessFactordoublegetRoughnessFactor()setRoughnessFactor(double)표면 거칠기: 0.0 = 매끄럽게/거울처럼, 1.0 = 완전히 거칠게.
emissiveColorVector3getEmissiveColor()setEmissiveColor(Vector3)= 자체 방출 광 색상. 기본값 null.
transparencydoublegetTransparency()setTransparency(double)= 불투명도 수준: 0.0 = 완전히 불투명, 1.0 = 완전히 투명.

사용 예시

import com.aspose.threed.*;
import com.aspose.threed.shading.PbrMaterial;

Scene scene = new Scene();

Mesh mesh = new Mesh();
mesh.getControlPoints().add(new Vector4(0, 0, 0, 1));
mesh.getControlPoints().add(new Vector4(1, 0, 0, 1));
mesh.getControlPoints().add(new Vector4(0.5, 1, 0, 1));
mesh.createPolygon(0, 1, 2);

PbrMaterial mat = new PbrMaterial("pbr-metal");
mat.setAlbedo(new Vector4(0.8, 0.6, 0.2, 1.0));    // gold-ish base color
mat.setMetallicFactor(0.9);
mat.setRoughnessFactor(0.2);

Node node = scene.getRootNode().createChildNode("mesh", mesh);
node.setMaterial(mat);

scene.save("pbr.glb");

반투명 PBR 재질

import com.aspose.threed.shading.PbrMaterial;

PbrMaterial mat = new PbrMaterial("glass");
mat.setAlbedo(new Vector4(0.7, 0.9, 1.0, 1.0));
mat.setTransparency(0.7);   // 70% transparent
mat.setRoughnessFactor(0.1);

가져온 씬에서 재질 읽기

import com.aspose.threed.*;
import com.aspose.threed.shading.PbrMaterial;

Scene scene = new Scene();
scene.open("model.gltf");

inspectNode(scene.getRootNode());

static void inspectNode(Node node) {
    if (node.getMaterial() != null) {
        Material m = node.getMaterial();
        if (m instanceof PbrMaterial) {
            PbrMaterial pbr = (PbrMaterial) m;
            System.out.println("Node '" + node.getName() + "': PbrMaterial");
            System.out.println("  albedo=" + pbr.getAlbedo());
            System.out.println("  metallic=" + pbr.getMetallicFactor());
            System.out.println("  roughness=" + pbr.getRoughnessFactor());
        } else {
            System.out.println("Node '" + node.getName() + "': " + m.getClass().getSimpleName());
        }
    }
    for (Node child : node.getChildNodes()) {
        inspectNode(child);
    }
}

참고

 한국어