Search in sources :

Example 1 with FBXMaterial

use of org.rajawali3d.loader.fbx.FBXValues.Objects.FBXMaterial in project Rajawali by Rajawali.

the class LoaderFBX method getMaterialForMesh.

private Material getMaterialForMesh(Object3D o, String name) {
    Material mat = new Material();
    FBXMaterial material = null;
    Stack<Connect> conns = mFbx.connections.connections;
    int num = conns.size();
    String materialName = null;
    for (int i = 0; i < num; ++i) {
        if (conns.get(i).object2.equals(name)) {
            materialName = conns.get(i).object1;
            break;
        }
    }
    if (materialName != null) {
        Stack<FBXMaterial> materials = mFbx.objects.materials;
        num = materials.size();
        for (int i = 0; i < num; ++i) {
            if (materials.get(i).name.equals(materialName)) {
                material = materials.get(i);
                break;
            }
        }
    }
    if (material != null) {
        mat.setDiffuseMethod(new DiffuseMethod.Lambert());
        mat.enableLighting(true);
        Vector3 color = material.properties.diffuseColor;
        mat.setColor(Color.rgb((int) (color.x * 255.f), (int) (color.y * 255.f), (int) (color.z * 255.f)));
        color = material.properties.ambientColor;
        mat.setAmbientColor(Color.rgb((int) (color.x * 255.f), (int) (color.y * 255.f), (int) (color.z * 255.f)));
        float intensity = material.properties.ambientFactor.floatValue();
        mat.setAmbientIntensity(intensity, intensity, intensity);
        if (material.shadingModel.equals("phong")) {
            SpecularMethod.Phong method = new SpecularMethod.Phong();
            if (material.properties.specularColor != null) {
                color = material.properties.specularColor;
                method.setSpecularColor(Color.rgb((int) (color.x * 255.f), (int) (color.y * 255.f), (int) (color.z * 255.f)));
            }
            if (material.properties.shininess != null)
                method.setShininess(material.properties.shininess);
        }
    }
    return mat;
}
Also used : Connect(org.rajawali3d.loader.fbx.FBXValues.Connections.Connect) FBXMaterial(org.rajawali3d.loader.fbx.FBXValues.Objects.FBXMaterial) Material(org.rajawali3d.materials.Material) FBXMaterial(org.rajawali3d.loader.fbx.FBXValues.Objects.FBXMaterial) Vector3(org.rajawali3d.math.vector.Vector3) SpecularMethod(org.rajawali3d.materials.methods.SpecularMethod) DiffuseMethod(org.rajawali3d.materials.methods.DiffuseMethod)

Aggregations

Connect (org.rajawali3d.loader.fbx.FBXValues.Connections.Connect)1 FBXMaterial (org.rajawali3d.loader.fbx.FBXValues.Objects.FBXMaterial)1 Material (org.rajawali3d.materials.Material)1 DiffuseMethod (org.rajawali3d.materials.methods.DiffuseMethod)1 SpecularMethod (org.rajawali3d.materials.methods.SpecularMethod)1 Vector3 (org.rajawali3d.math.vector.Vector3)1