Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@
import de.javagl.jgltf.model.MeshModel;
import de.javagl.jgltf.model.MeshPrimitiveModel;
import de.javagl.jgltf.model.NodeModel;
import de.javagl.jgltf.model.PbrMaterialModel;
import de.javagl.jgltf.model.SceneModel;
import de.javagl.jgltf.model.SkinModel;
import de.javagl.jgltf.model.TextureModel;
Expand All @@ -65,12 +66,11 @@
import de.javagl.jgltf.model.impl.DefaultNodeModel;
import de.javagl.jgltf.model.impl.DefaultSceneModel;
import de.javagl.jgltf.model.impl.DefaultSkinModel;
import de.javagl.jgltf.model.impl.DefaultTechniqueMaterialModel;
import de.javagl.jgltf.model.impl.DefaultTextureModel;
import de.javagl.jgltf.model.structure.BufferBuilderStrategies;
import de.javagl.jgltf.model.structure.BufferBuilderStrategy;
import de.javagl.jgltf.model.v1.GltfModelV1;
import de.javagl.jgltf.model.v1.MaterialModelV1;
import de.javagl.jgltf.model.v2.MaterialModelV2;

/**
* A class for building {@link GltfModel} instances.<br>
Expand Down Expand Up @@ -387,10 +387,10 @@ public void addMaterialModel(MaterialModel materialModel)
boolean added = materialModelsSet.add(materialModel);
if (added)
{
if (materialModel instanceof MaterialModelV1)
if (materialModel instanceof DefaultTechniqueMaterialModel)
{
MaterialModelV1 materialModelV1 =
(MaterialModelV1)materialModel;
DefaultTechniqueMaterialModel materialModelV1 =
(DefaultTechniqueMaterialModel)materialModel;

addTechniqueModel(materialModelV1.getTechniqueModel());

Expand All @@ -404,15 +404,15 @@ public void addMaterialModel(MaterialModel materialModel)
}
}
}
if (materialModel instanceof MaterialModelV2)
if (materialModel instanceof PbrMaterialModel)
{
MaterialModelV2 materialModelV2 =
(MaterialModelV2)materialModel;
addTextureModel(materialModelV2.getBaseColorTexture());
addTextureModel(materialModelV2.getOcclusionTexture());
addTextureModel(materialModelV2.getMetallicRoughnessTexture());
addTextureModel(materialModelV2.getEmissiveTexture());
addTextureModel(materialModelV2.getNormalTexture());
PbrMaterialModel pbrMaterialModel =
(PbrMaterialModel)materialModel;
addTextureModel(pbrMaterialModel.getBaseColorTexture());
addTextureModel(pbrMaterialModel.getOcclusionTexture());
addTextureModel(pbrMaterialModel.getMetallicRoughnessTexture());
addTextureModel(pbrMaterialModel.getEmissiveTexture());
addTextureModel(pbrMaterialModel.getNormalTexture());
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,16 @@
package de.javagl.jgltf.model.creation;

import de.javagl.jgltf.model.ImageModel;
import de.javagl.jgltf.model.PbrMaterialModel.AlphaMode;
import de.javagl.jgltf.model.TextureModel;
import de.javagl.jgltf.model.v2.MaterialModelV2;
import de.javagl.jgltf.model.v2.MaterialModelV2.AlphaMode;
import de.javagl.jgltf.model.impl.DefaultNormalTextureInfoModel;
import de.javagl.jgltf.model.impl.DefaultOcclusionTextureInfoModel;
import de.javagl.jgltf.model.impl.DefaultPbrMaterialModel;
import de.javagl.jgltf.model.impl.DefaultPbrMetallicRoughnessModel;
import de.javagl.jgltf.model.impl.DefaultTextureInfoModel;

/**
* A class for building {@link MaterialModelV2} instances
* A class for building {@link DefaultPbrMaterialModel} instances
*/
public class MaterialBuilder
{
Expand All @@ -47,16 +51,22 @@ public static MaterialBuilder create()
}

/**
* The {@link MaterialModelV2} that is currently being built
* The {@link DefaultPbrMaterialModel} that is currently being built
*/
private MaterialModelV2 materialModel;
private DefaultPbrMaterialModel materialModel;

/**
* The {@link DefaultPbrMetallicRoughnessModel}
*/
private DefaultPbrMetallicRoughnessModel metallicRoughnessModel;

/**
* Private constructor
*/
private MaterialBuilder()
{
materialModel = new MaterialModelV2();
materialModel = new DefaultPbrMaterialModel();
metallicRoughnessModel = new DefaultPbrMetallicRoughnessModel();
}

/**
Expand All @@ -71,7 +81,8 @@ private MaterialBuilder()
public MaterialBuilder setBaseColorFactor(
double r, double g, double b, double a)
{
materialModel.setBaseColorFactor(new double[] { r, g, b, a });
metallicRoughnessModel.setBaseColorFactor(new double[] { r, g, b, a });
materialModel.setPbrMetallicRoughnessModel(metallicRoughnessModel);
return this;
}

Expand Down Expand Up @@ -102,8 +113,11 @@ public MaterialBuilder setBaseColorTexture(
public MaterialBuilder setBaseColorTexture(
TextureModel baseColorTexture, Integer texCoord)
{
materialModel.setBaseColorTexture(baseColorTexture);
materialModel.setBaseColorTexcoord(texCoord);
DefaultTextureInfoModel textureInfo = new DefaultTextureInfoModel();
textureInfo.setTextureModel(baseColorTexture);
textureInfo.setTexCoord(texCoord);
metallicRoughnessModel.setBaseColorTexture(textureInfo);
materialModel.setPbrMetallicRoughnessModel(metallicRoughnessModel);
return this;
}

Expand All @@ -117,8 +131,9 @@ public MaterialBuilder setBaseColorTexture(
public MaterialBuilder setMetallicRoughnessFactors(
double metallicFactor, double roughnessFactor)
{
materialModel.setMetallicFactor(metallicFactor);
materialModel.setRoughnessFactor(roughnessFactor);
metallicRoughnessModel.setMetallicFactor(metallicFactor);
metallicRoughnessModel.setRoughnessFactor(roughnessFactor);
materialModel.setPbrMetallicRoughnessModel(metallicRoughnessModel);
return this;
}

Expand Down Expand Up @@ -149,8 +164,11 @@ public MaterialBuilder setMetallicRoughnessTexture(
public MaterialBuilder setMetallicRoughnessTexture(
TextureModel metallicRoughnessTexture, Integer texCoord)
{
materialModel.setMetallicRoughnessTexture(metallicRoughnessTexture);
materialModel.setMetallicRoughnessTexcoord(texCoord);
DefaultTextureInfoModel textureInfo = new DefaultTextureInfoModel();
textureInfo.setTextureModel(metallicRoughnessTexture);
textureInfo.setTexCoord(texCoord);
metallicRoughnessModel.setMetallicRoughnessTextureInfo(textureInfo);
materialModel.setPbrMetallicRoughnessModel(metallicRoughnessModel);
return this;
}

Expand Down Expand Up @@ -184,9 +202,12 @@ public MaterialBuilder setNormalTexture(
public MaterialBuilder setNormalTexture(
TextureModel normalTexture, double scale, Integer texCoord)
{
materialModel.setNormalTexture(normalTexture);
materialModel.setNormalScale(scale);
materialModel.setNormalTexcoord(texCoord);
DefaultNormalTextureInfoModel textureInfo =
new DefaultNormalTextureInfoModel();
textureInfo.setTextureModel(normalTexture);
textureInfo.setTexCoord(texCoord);
textureInfo.setScale(scale);
materialModel.setNormalTextureInfoModel(textureInfo);
return this;
}

Expand Down Expand Up @@ -220,9 +241,12 @@ public MaterialBuilder setOcclusionTexture(
public MaterialBuilder setOcclusionTexture(
TextureModel occlusionTexture, double strength, Integer texCoord)
{
materialModel.setOcclusionTexture(occlusionTexture);
materialModel.setOcclusionStrength(strength);
materialModel.setOcclusionTexcoord(texCoord);
DefaultOcclusionTextureInfoModel textureInfo =
new DefaultOcclusionTextureInfoModel();
textureInfo.setTextureModel(occlusionTexture);
textureInfo.setTexCoord(texCoord);
textureInfo.setStrength(strength);
materialModel.setOcclusionTextureInfoModel(textureInfo);
return this;
}

Expand Down Expand Up @@ -260,9 +284,12 @@ public MaterialBuilder setEmissiveTexture(
public MaterialBuilder setEmissiveTexture(TextureModel emissiveTexture,
double r, double g, double b, Integer texCoord)
{
materialModel.setEmissiveTexture(emissiveTexture);
DefaultTextureInfoModel textureInfo =
new DefaultTextureInfoModel();
textureInfo.setTextureModel(emissiveTexture);
textureInfo.setTexCoord(texCoord);
materialModel.setEmissiveTextureInfoModel(textureInfo);
materialModel.setEmissiveFactor(new double[] { r, g, b });
materialModel.setEmissiveTexcoord(texCoord);
return this;
}

Expand Down Expand Up @@ -303,14 +330,15 @@ public MaterialBuilder setDoubleSided(boolean doubleSided)
}

/**
* Create the {@link MaterialModelV2} instance with the current state
* Create the {@link DefaultPbrMaterialModel} instance with the current state
*
* @return The {@link MaterialModelV2}
* @return The {@link DefaultPbrMaterialModel}
*/
public MaterialModelV2 build()
public DefaultPbrMaterialModel build()
{
MaterialModelV2 result = materialModel;
materialModel = new MaterialModelV2();
DefaultPbrMaterialModel result = materialModel;
materialModel = new DefaultPbrMaterialModel();
metallicRoughnessModel = new DefaultPbrMetallicRoughnessModel();
return result;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@

import de.javagl.jgltf.model.MaterialModel;
import de.javagl.jgltf.model.TextureModel;
import de.javagl.jgltf.model.impl.DefaultPbrMaterialModel;
import de.javagl.jgltf.model.impl.DefaultTextureModel;
import de.javagl.jgltf.model.v2.MaterialModelV2;

/**
* Methods related to {@link MaterialModel} instances
Expand All @@ -48,14 +48,14 @@ public class MaterialModels
* @param a The alpha component
* @return The material model
*/
public static MaterialModelV2 createFromBaseColor(
public static DefaultPbrMaterialModel createFromBaseColor(
double r, double g, double b, double a)
{
MaterialBuilder builder = MaterialBuilder.create();
builder.setBaseColorFactor(r, g, b, a);
builder.setDoubleSided(true);
builder.setMetallicRoughnessFactors(0.0, 1.0);
MaterialModelV2 result = builder.build();
DefaultPbrMaterialModel result = builder.build();
return result;
}

Expand All @@ -67,14 +67,14 @@ public static MaterialModelV2 createFromBaseColor(
* @param texCoord The optional texture coordinate index
* @return The material model
*/
public static MaterialModelV2 createFromBaseColorTexture(
public static DefaultPbrMaterialModel createFromBaseColorTexture(
TextureModel baseColorTexture, Integer texCoord)
{
MaterialBuilder builder = MaterialBuilder.create();
builder.setBaseColorTexture(baseColorTexture, texCoord);
builder.setDoubleSided(true);
builder.setMetallicRoughnessFactors(0.0, 1.0);
MaterialModelV2 result = builder.build();
DefaultPbrMaterialModel result = builder.build();
return result;
}

Expand All @@ -87,14 +87,14 @@ public static MaterialModelV2 createFromBaseColorTexture(
* @param uri The URI for the image
* @return The material model
*/
public static MaterialModelV2 createFromImageFile(
public static DefaultPbrMaterialModel createFromImageFile(
String imageFileName, String uri)
{
MaterialBuilder builder = MaterialBuilder.create();
builder.setBaseColorTexture(imageFileName, uri, null);
builder.setDoubleSided(true);
builder.setMetallicRoughnessFactors(0.0, 1.0);
MaterialModelV2 result = builder.build();
DefaultPbrMaterialModel result = builder.build();
return result;
}

Expand All @@ -108,7 +108,7 @@ public static MaterialModelV2 createFromImageFile(
* @param mimeType The MIME type of the image
* @return The material model
*/
public static MaterialModelV2 createFromBufferedImage(
public static DefaultPbrMaterialModel createFromBufferedImage(
BufferedImage bufferedImage, String uri, String mimeType)
{
DefaultTextureModel baseColorTexture =
Expand All @@ -117,7 +117,7 @@ public static MaterialModelV2 createFromBufferedImage(
builder.setBaseColorTexture(baseColorTexture, null);
builder.setDoubleSided(true);
builder.setMetallicRoughnessFactors(0.0, 1.0);
MaterialModelV2 result = builder.build();
DefaultPbrMaterialModel result = builder.build();
return result;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@
import de.javagl.jgltf.model.creation.SceneModels;
import de.javagl.jgltf.model.impl.DefaultGltfModel;
import de.javagl.jgltf.model.impl.DefaultMeshPrimitiveModel;
import de.javagl.jgltf.model.impl.DefaultPbrMaterialModel;
import de.javagl.jgltf.model.io.GltfWriter;
import de.javagl.jgltf.model.io.v2.GltfAssetV2;
import de.javagl.jgltf.model.io.v2.GltfAssetsV2;
import de.javagl.jgltf.model.v2.MaterialModelV2;

/**
* A basic example for the glTF model creation.<br>
Expand Down Expand Up @@ -46,7 +46,7 @@ private static GltfModel createGltfModel()
MeshPrimitiveModels.create(indices, positions, null, null);

// Create a material, and assign it to the mesh primitive
MaterialModelV2 materialModel =
DefaultPbrMaterialModel materialModel =
MaterialModels.createFromBaseColor(1.0f, 0.0f, 0.0f, 1.0f);
meshPrimitiveModel.setMaterialModel(materialModel);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,11 @@
import de.javagl.jgltf.model.impl.DefaultMeshModel;
import de.javagl.jgltf.model.impl.DefaultMeshPrimitiveModel;
import de.javagl.jgltf.model.impl.DefaultNodeModel;
import de.javagl.jgltf.model.impl.DefaultPbrMaterialModel;
import de.javagl.jgltf.model.impl.DefaultSceneModel;
import de.javagl.jgltf.model.io.GltfWriter;
import de.javagl.jgltf.model.io.v2.GltfAssetV2;
import de.javagl.jgltf.model.io.v2.GltfAssetsV2;
import de.javagl.jgltf.model.v2.MaterialModelV2;

/**
* A basic example for the glTF model creation.<br>
Expand All @@ -42,7 +42,7 @@ public static void main(String[] args) throws Exception
private static GltfModel createGltfModel()
{
// Create a material
MaterialModelV2 materialModel = createMaterial();
DefaultPbrMaterialModel materialModel = createMaterial();

// Create a mesh primitive
DefaultMeshPrimitiveModel meshPrimitiveModel = createMeshPrimitive();
Expand Down Expand Up @@ -117,7 +117,7 @@ private static DefaultMeshPrimitiveModel createMeshPrimitive()
return meshPrimitiveModel;
}

private static MaterialModelV2 createMaterial()
private static DefaultPbrMaterialModel createMaterial()
{
// Create a material using the MaterialBuilder class.
// This allows configuring all elements of the resulting
Expand All @@ -138,7 +138,7 @@ private static MaterialModelV2 createMaterial()
materialBuilder.setEmissiveTexture(
emissiveTexture, 1.0f, 1.0f, 1.0f, 1);

MaterialModelV2 materialModel = materialBuilder.build();
DefaultPbrMaterialModel materialModel = materialBuilder.build();
return materialModel;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,11 @@
import de.javagl.jgltf.model.impl.DefaultGltfModel;
import de.javagl.jgltf.model.impl.DefaultMeshModel;
import de.javagl.jgltf.model.impl.DefaultMeshPrimitiveModel;
import de.javagl.jgltf.model.impl.DefaultPbrMaterialModel;
import de.javagl.jgltf.model.io.Buffers;
import de.javagl.jgltf.model.io.GltfWriter;
import de.javagl.jgltf.model.io.v2.GltfAssetV2;
import de.javagl.jgltf.model.io.v2.GltfAssetsV2;
import de.javagl.jgltf.model.v2.MaterialModelV2;

/**
* Basic tests and examples for the glTF model creation with morph targets
Expand Down Expand Up @@ -74,7 +74,7 @@ private static GltfModel createGltfModel()
meshPrimitiveBuilder.build();

// Create a material, and assign it to the mesh primitive
MaterialModelV2 materialModel =
DefaultPbrMaterialModel materialModel =
MaterialModels.createFromBaseColor(1.0f, 0.9f, 0.9f, 1.0f);
meshPrimitiveModel.setMaterialModel(materialModel);

Expand Down
Loading