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

org.treblereel.gwt.three4g.textures.Texture Maven / Gradle / Ivy

package org.treblereel.gwt.three4g.textures;

import elemental2.dom.HTMLCanvasElement;
import elemental2.dom.ImageData;
import jsinterop.annotations.JsConstructor;
import jsinterop.annotations.JsProperty;
import jsinterop.annotations.JsType;
import org.treblereel.gwt.three4g.core.events.EventDispatcher;
import org.treblereel.gwt.three4g.math.Matrix3;
import org.treblereel.gwt.three4g.math.Vector2;

/**
 * Create a texture to apply to a surface or as a reflection or refraction map.
 *
 * @author Dmitrii Tikhomirov
 * Created by treblereel on 3/1/18.
 */
@JsType(isNative = true, namespace = "THREE")
public class Texture extends EventDispatcher {

    /**
     * Optional name of the object (doesn't need to be unique). Default is an empty string.
     */
    public String name;

    /**
     * An image object, typically created using the TextureLoader.load method. This can be any image (e.g., PNG, JPG, GIF, DDS)
     * or video (e.g., MP4, OGG/OGV) type supported by three.js.
     * 

* To use video as a texture you need to have a playing HTML5 video element as a source for your texture image and * continuously update this texture as long as video is playing - the VideoTexture class handles this automatically. */ public ImageData image; /** * Array of user-specified mipmaps (optional). */ public Object[] mipmaps; /** * How the image is applied to the object. An object type of THREE.UVMapping is the default, where the U,V coordinates are used to apply the map. * See the texture constants page for other mapping types. */ public int mapping; /** * This defines how the texture is wrapped horizontally and corresponds to U in UV mapping. * The default is THREE.ClampToEdgeWrapping, where the edge is clamped to the outer edge texels. The other two choices * are THREE.RepeatWrapping and THREE.MirroredRepeatWrapping. See the texture constants page for details. */ public int wrapS; /** * This defines how the texture is wrapped vertically and corresponds to V in UV mapping. * The same choices are available as for wrapS . *

* NOTE: tiling of images in textures only functions if image dimensions are powers of two (2, 4, 8, 16, 32, 64, 128, * 256, 512, 1024, 2048, ...) in terms of pixels. Individual dimensions need not be equal, but each must be a power of two. * This is a limitation of WebGL, not three.js. */ public int wrapT; /** * How the texture is sampled when a texel covers more than one pixel. The default is THREE.LinearFilter, which takes * the four closest texels and bilinearly interpolates among them. The other option is THREE.NearestFilter, which uses * the value of the closest texel. * See the texture constants page for details. */ public int magFilter; /** * How the texture is sampled when a texel covers less than one pixel. The default is THREE.LinearMipMapLinearFilter, * which uses mipmapping and a trilinear filter. *

* See the texture constants page for all possible choices. */ public int minFilter; /** * The number of samples taken along the axis through the pixel that has the highest density of texels. By default, * this value is 1. A higher value gives a less blurry result than a basic mipmap, at the cost of more texture samples * being used. Use renderer.getMaxAnisotropy() to find the maximum valid anisotropy value for the GPU; this value is * usually a power of 2. */ public int anisotropy; /** * The default is THREE.RGBAFormat, although the TextureLoader will automatically set this to THREE.RGBFormat for JPG images. *

* See the texture constants page for details of other formats. */ public int format; /** * This must correspond to the .format. The default is THREE.UnsignedByteType, which will be used for most texture formats. *

* See the texture constants page for details of other formats. */ public int type; /** * How much a single repetition of the texture is offset from the beginning, in each direction U and V. Typical range * is 0.0 to 1.0. _Note:_ The offset property is a convenience modifier and only affects the Texture's application to * the first set of UVs on a model. If the Texture is used as a map requiring additional UV sets (e.g. the aoMap or * lightMap of most stock materials), those UVs must be manually assigned to achieve the desired offset. */ public Vector2 offset; /** * How many times the texture is repeated across the surface, in each direction U and V. If repeat is set greater than * 1 in either direction, the corresponding Wrap parameter should also be set to THREE.RepeatWrapping or THREE.MirroredRepeatWrapping * to achieve the desired tiling effect. _Note:_ The repeat property is a convenience modifier and only affects the * Texture's application to the first set of UVs on a model. If the Texture is used as a map requiring additional UV * sets (e.g. the aoMap or lightMap of most stock materials), those UVs must be manually assigned to achieve the desired * repetiton. */ public Vector2 repeat; /** * How much the texture is rotated around the center point, in radians. Postive values are counter-clockwise. Default is 0. */ public float rotation; /** * Indicates where the center of rotation is. To rotate around the center point set this value to (0.5, 0.5). Default value is (0.0, 0.0). */ public Vector2 center; /** * Whether to update the texture's uv-transform # .matrix based on the .offset , .repeat , and .rotation settings. * True by default. Set this to false if you are specifying the uv-transform matrix directly. */ public boolean matrixAutoUpdate; /** * The uv-transform matrix for the texture. Updated by the renderer from the texture properties .offset , * .repeat , and .rotation when the texture's .matrixAutoUpdate property is true. When .matrixAutoUpdate * property is false, this matrix may be set manually. Default is the indentity matrix. */ public Matrix3 matrix; /** * Whether to generate mipmaps (if possible) for a texture. True by default. Set this to false if you are creating * mipmaps manually. */ public boolean generateMipmaps; /** * False by default, which is the norm for PNG images. Set to true if the RGB values have been stored premultiplied by alpha. */ public boolean premultiplyAlpha; /** * True by default. Flips the image's Y axis to match the WebGL texture coordinate space. */ public boolean flipY; /** * 4 by default. Specifies the alignment requirements for the start of each pixel row in memory. The allowable values * are 1 (byte-alignment), 2 (rows aligned to even-numbered bytes), 4 (word-alignment), and 8 (rows start on double-word * boundaries). See glPixelStorei for more information. */ public int unpackAlignment; /** * THREE.LinearEncoding is the default. See the texture constants page for details of other formats. *

* Note that ff this value is changed on a texture after the material has been used, it is necessary to trigger a * Material.needsUpdate for this value to be realized in the shader. */ public int encoding; /** * A callback function, called when the texture is updated (e.g., when needsUpdate has been set to true and then the texture is used). */ public UpdateCallback onUpdate; /** * Set this to true to trigger an update next time the texture is used. Particularly important for setting the wrap mode. */ public boolean needsUpdate; public Texture() { } public Texture(HTMLCanvasElement image) { } public Texture(HTMLCanvasElement image, int mapping, int wrapS, int wrapT, int magFilter, int minFilter, int format, int type, int anisotropy, int encoding) { } /** * Readonly - unique number for this texture instance. * * @return id - unique number for this texture instance. */ @JsProperty public native int getId(); /** * UUID of this object instance. This gets automatically assigned, so this shouldn't be edited. * * @return uuid of this object instance */ @JsProperty public native String getUuid(); /** * This starts at 0 and counts how many times # .needsUpdate is set to true. * * @return version of this object instance */ @JsProperty public native int getVersion(); /** * Update the texture's uv-transform .matrix from the texture properties .offset, .repeat, .rotation, and .center. */ public native void updateMatrix(); /** * Make copy of the texture. Note this is not a "deep copy", the image is shared. * * @return instance of texture */ public native Texture clone(); /** * Convert the material to three.js JSON format. * * @return JSON String */ public native String toJSON(); /** * Convert the material to three.js JSON format. * * @param meta -- optional object containing metadata. * @return JSON String */ public native String toJSON(Object meta); /** * Call EventDispatcher.dispatchEvent with a 'dispose' event type. */ public native void dispose(); /** * Transform the uv based on the value of this texture's .offset, .repeat, .wrapS, .wrapT and .flipY properties. * @param uv instance of Vector2 * @return Vector2 */ public native Vector2 transformUv(Vector2 uv); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy