All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.treblereel.gwt.three4g.materials.MeshLambertMaterial Maven / Gradle / Ivy

package org.treblereel.gwt.three4g.materials;

import jsinterop.annotations.JsConstructor;
import jsinterop.annotations.JsOverlay;
import jsinterop.annotations.JsType;
import org.treblereel.gwt.three4g.materials.parameters.MeshLambertMaterialParameters;
import org.treblereel.gwt.three4g.math.Color;
import org.treblereel.gwt.three4g.textures.CubeTexture;
import org.treblereel.gwt.three4g.textures.Texture;

/**
 * A material for non-shiny surfaces, without specular highlights.
 * 

* The material uses a non-physically based Lambertian model for calculating reflectance. This can simulate some surfaces * (such as untreated wood or stone) well, but cannot simulate shiny surfaces with specular highlights (such as varnished wood). *

* Shading is calculated using a Gouraud shading model. This calculates shading per vertex (i.e. in the vertex shader) and * interpolates the results over the polygon's faces. *

* Due to the simplicity of the reflectance and illumination models, performance will be greater when using this material * over the MeshPhongMaterial, MeshStandardMaterial or MeshPhysicalMaterial, at the cost of some graphical accuracy. * * @author Dmitrii Tikhomirov * Created by treblereel on 3/22/18. */ @JsType(isNative = true, namespace = "THREE") public class MeshLambertMaterial extends Material { /** * The alpha map is a grayscale texture that controls the opacity across the surface (black: fully transparent; * white: fully opaque). Default is null. *

* Only the color of the texture is used, ignoring the alpha channel if one exists. For RGB and RGBA textures, * the WebGL renderer will use the green channel when sampling this texture due to the extra bit of precision * provided for green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and luminance/alpha * textures will also still work as expected. */ public Texture alphaMap; /** * The red channel of this texture is used as the ambient occlusion map. Default is null. The aoMap requires * a second set of UVs, and consequently will ignore the repeat and offset Texture properties. */ public Texture aoMap; /** * Intensity of the ambient occlusion effect. Default is 1. Zero is no occlusion effect. */ public float aoMapIntensity; /** * Color of the material, by default set to white (0xffffff). */ public Color color; /** * How to combine the result of the surface's color with the environment map, if any. *

* Options are Multiply (default), MixOperation, AddOperation. If mix is chosen, the .reflectivity * is used to blend between the two colors. */ public int combine; /** * Emissive (light) color of the material, essentially a solid color unaffected by other lighting. Default is black.. */ public Color emissive; /** * Set emisssive (glow) map. Default is null. The emissive map color is modulated by the emissive color and the emissive * intensity. If you have an emissive map, be sure to set the emissive color to something other than black. */ public Texture emissiveMap; /** * Intensity of the emissive light. Modulates the emissive color. Default is 1. */ public float emissiveIntensity; /** * The environment map. Default is null. */ public Texture envMap; /** * Used to check whether this or derived classes are mesh Lambert materials. Default is true. *

* You should not change this, as it used internally for optimisation. */ public boolean isMeshLambertMaterial; /** * The light map. Default is null. The lightMap requires a second set of UVs, and consequently will ignore the repeat * and offset Texture properties. */ public Texture lightMap; /** * Intensity of the baked light. Default is 1. */ public float lightMapIntensity; /** * Sets the color of the points using data from a Texture. */ public Texture map; /** * Defines whether the material uses morphNormals. Set as true to pass morphNormal attributes from the Geometry to * the shader. Default is false. */ public boolean morphNormals; /** * Define whether the material uses morphTargets. Default is false. */ public boolean morphTargets; /** * How much the environment map affects the surface; also see .combine. */ public float reflectivity; /** * The index of refraction (IOR) of air (approximately 1) divided by the index of refraction of the material. * It is used with environment mapping modes CubeRefractionMapping and EquirectangularRefractionMapping. * The refraction ratio should not exceed 1. Default is 0.98. */ public float refractionRatio; /** * Define whether the material uses skinning. Default is false. */ public boolean skinning; /** * Specular map used by the material. Default is null. */ public Texture specularMap; /** * Render geometry as wireframe. Default is false (i.e. render as flat polygons). */ public boolean wireframe; /** * Define appearance of line ends. Possible values are "butt", "round" and "square". Default is 'round'. *

* This corresponds to the 2D Canvas lineCap property and it is ignored by the WebGL renderer. */ public String wireframeLinecap; /** * Define appearance of line joints. Possible values are "round", "bevel" and "miter". Default is 'round'. *

* This corresponds to the 2D Canvas lineJoin property and it is ignored by the WebGL renderer. */ public String wireframeLinejoin; /** * Controls wireframe thickness. Default is 1. *

* Due to limitations in the ANGLE layer, on Windows platforms linewidth will always be 1 regardless of the set value. */ public float wireframeLinewidth; @JsConstructor public MeshLambertMaterial() { } /** * @param params - (optional) an object with one or more properties defining the material's appearance. Any property * of the material (including any property inherited from Material) can be passed in here. *

* The exception is the property color, which can be passed in as a hexadecimal string and is 0xffffff (white) by default. * Color.set( color ) is called internally. */ @JsConstructor public MeshLambertMaterial(MeshLambertMaterialParameters params) { } @JsOverlay public final MeshLambertMaterial setColor(int color) { this.color = new Color(color); return this; } @JsOverlay public final MeshLambertMaterial setColor(Color color) { this.color = color; return this; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy