Module javafx.graphics
Package javafx.scene.paint

# Class PhongMaterial

java.lang.Object
javafx.scene.paint.Material
javafx.scene.paint.PhongMaterial

public class PhongMaterial extends Material
The `PhongMaterial` class provides definitions of properties that represent a Phong shaded material. It describes the interaction of light with the surface of the `Mesh` it is applied to. The `PhongMaterial` reflects light in terms of a diffuse and specular component together with an ambient and a self illumination term. The color of a point on a geometric surface is mathematical function of these four components.

The color is computed by the following equation:

     for each ambient light source i {
         ambient += lightColor[i]
     }

     for each point light source i {
         diffuse += (L[i] . N) * lightColor[i]
         specular += ((R[i] . V) ^ (specularPower * intensity(specularMap))) * lightColor[i]
     }

     color = (ambient + diffuse) * diffuseColor * diffuseMap
                 + specular * specularColor * specularMap
                 + selfIlluminationMap

where `lightColor[i]` is the color of light source i,
`L[i]` is the vector from the surface to light source i,
`N` is the normal vector (taking into the account the bumpMap if present),
`R[i]` is the normalized reflection vector for L[i] about the surface normal,
and `V` is the normalized view vector.

Since:
  JavaFX 8.0
See Also:
  - `AmbientLight`
  - `PointLight`

- ## Property Summary

  Properties
  Type
  Property
  Description
  `final ObjectProperty<Image>`
  `bumpMap`
  The bump map of this `PhongMaterial`, which is a normal map stored as a RGB `Image`.
  `final ObjectProperty<Color>`
  `diffuseColor`
  The diffuse color of this `PhongMaterial`.
  `final ObjectProperty<Image>`
  `diffuseMap`
  The diffuse map of this `PhongMaterial`.
  `final ObjectProperty<Image>`
  `selfIlluminationMap`
  The self illumination map of this `PhongMaterial`.
  `final ObjectProperty<Color>`
  `specularColor`
  The specular color of this `PhongMaterial`.
  `final ObjectProperty<Image>`
  `specularMap`
  The specular map of this `PhongMaterial`.
  `final DoubleProperty`
  `specularPower`
  The specular power of this `PhongMaterial`.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `PhongMaterial()`
  Creates a new instance of `PhongMaterial` class with a default Color.WHITE `diffuseColor` property.
  `PhongMaterial(Color diffuseColor)`
  Creates a new instance of `PhongMaterial` class using the specified color for its `diffuseColor` property.
  `PhongMaterial(Color diffuseColor, Image diffuseMap, Image specularMap, Image bumpMap, Image selfIlluminationMap)`
  Creates a new instance of `PhongMaterial` class using the specified colors and images for its `diffuseColor` properties.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `final ObjectProperty<Image>`
  `bumpMapProperty()`
  The bump map of this `PhongMaterial`, which is a normal map stored as a RGB `Image`.
  `final ObjectProperty<Color>`
  `diffuseColorProperty()`
  The diffuse color of this `PhongMaterial`.
  `final ObjectProperty<Image>`
  `diffuseMapProperty()`
  The diffuse map of this `PhongMaterial`.
  `final Image`
  `getBumpMap()`
  Gets the value of the `bumpMap` property.
  `final Color`
  `getDiffuseColor()`
  Gets the value of the `diffuseColor` property.
  `final Image`
  `getDiffuseMap()`
  Gets the value of the `diffuseMap` property.
  `final Image`
  `getSelfIlluminationMap()`
  Gets the value of the `selfIlluminationMap` property.
  `final Color`
  `getSpecularColor()`
  Gets the value of the `specularColor` property.
  `final Image`
  `getSpecularMap()`
  Gets the value of the `specularMap` property.
  `final double`
  `getSpecularPower()`
  Gets the value of the `specularPower` property.
  `final ObjectProperty<Image>`
  `selfIlluminationMapProperty()`
  The self illumination map of this `PhongMaterial`.
  `final void`
  `setBumpMap(Image value)`
  Sets the value of the `bumpMap` property.
  `final void`
  `setDiffuseColor(Color value)`
  Sets the value of the `diffuseColor` property.
  `final void`
  `setDiffuseMap(Image value)`
  Sets the value of the `diffuseMap` property.
  `final void`
  `setSelfIlluminationMap(Image value)`
  Sets the value of the `selfIlluminationMap` property.
  `final void`
  `setSpecularColor(Color value)`
  Sets the value of the `specularColor` property.
  `final void`
  `setSpecularMap(Image value)`
  Sets the value of the `specularMap` property.
  `final void`
  `setSpecularPower(double value)`
  Sets the value of the `specularPower` property.
  `final ObjectProperty<Color>`
  `specularColorProperty()`
  The specular color of this `PhongMaterial`.
  `final ObjectProperty<Image>`
  `specularMapProperty()`
  The specular map of this `PhongMaterial`.
  `final DoubleProperty`
  `specularPowerProperty()`
  The specular power of this `PhongMaterial`.

  ### Methods declared in class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Property Details

  - ### diffuseColor

    public final ObjectProperty<Color> diffuseColorProperty
    The diffuse color of this `PhongMaterial`.
    Default value:
      Color.WHITE
    See Also:
      - `getDiffuseColor()`
      - `setDiffuseColor(Color)`
      - `diffuseColorProperty()`

  - ### specularColor

    public final ObjectProperty<Color> specularColorProperty
    The specular color of this `PhongMaterial`.
    Default value:
      null
    See Also:
      - `getSpecularColor()`
      - `setSpecularColor(Color)`
      - `specularColorProperty()`

  - ### specularPower

    public final DoubleProperty specularPowerProperty
    The specular power of this `PhongMaterial`.
    Default value:
      32.0
    See Also:
      - `getSpecularPower()`
      - `setSpecularPower(double)`
      - `specularPowerProperty()`

  - ### diffuseMap

    public final ObjectProperty<Image> diffuseMapProperty
    The diffuse map of this `PhongMaterial`.
    Default value:
      null
    See Also:
      - `getDiffuseMap()`
      - `setDiffuseMap(Image)`
      - `diffuseMapProperty()`

  - ### specularMap

    public final ObjectProperty<Image> specularMapProperty
    The specular map of this `PhongMaterial`.
    Default value:
      null
    See Also:
      - `getSpecularMap()`
      - `setSpecularMap(Image)`
      - `specularMapProperty()`

  - ### bumpMap

    public final ObjectProperty<Image> bumpMapProperty
    The bump map of this `PhongMaterial`, which is a normal map stored as a RGB `Image`.
    Default value:
      null
    See Also:
      - `getBumpMap()`
      - `setBumpMap(Image)`
      - `bumpMapProperty()`

  - ### selfIlluminationMap

    public final ObjectProperty<Image> selfIlluminationMapProperty
    The self illumination map of this `PhongMaterial`.
    Default value:
      null
    See Also:
      - `getSelfIlluminationMap()`
      - `setSelfIlluminationMap(Image)`
      - `selfIlluminationMapProperty()`

- ## Constructor Details

  - ### PhongMaterial

    public PhongMaterial()
    Creates a new instance of `PhongMaterial` class with a default Color.WHITE `diffuseColor` property.

  - ### PhongMaterial

    public PhongMaterial(Color diffuseColor)
    Creates a new instance of `PhongMaterial` class using the specified color for its `diffuseColor` property.
    Parameters:
      `diffuseColor` - the color of the diffuseColor property

  - ### PhongMaterial

    public PhongMaterial(Color diffuseColor, Image diffuseMap, Image specularMap, Image bumpMap, Image selfIlluminationMap)
    Creates a new instance of `PhongMaterial` class using the specified colors and images for its `diffuseColor` properties.
    Parameters:
      `diffuseColor` - the color of the diffuseColor property
      `diffuseMap` - the image of the diffuseMap property
      `specularMap` - the image of the specularMap property
      `bumpMap` - the image of the bumpMap property
      `selfIlluminationMap` - the image of the selfIlluminationMap property

- ## Method Details

  - ### setDiffuseColor

    public final void setDiffuseColor(Color value)
    Sets the value of the `diffuseColor` property.
    Property description:
      The diffuse color of this `PhongMaterial`.
    Default value:
      Color.WHITE
    Parameters:
      `value` - the value for the `diffuseColor` property
    See Also:
      - `getDiffuseColor()`
      - `diffuseColorProperty()`

  - ### getDiffuseColor

    public final Color getDiffuseColor()
    Gets the value of the `diffuseColor` property.
    Property description:
      The diffuse color of this `PhongMaterial`.
    Default value:
      Color.WHITE
    Returns:
      the value of the `diffuseColor` property
    See Also:
      - `setDiffuseColor(Color)`
      - `diffuseColorProperty()`

  - ### diffuseColorProperty

    public final ObjectProperty<Color> diffuseColorProperty()
    The diffuse color of this `PhongMaterial`.
    Default value:
      Color.WHITE
    Returns:
      the `diffuseColor` property
    See Also:
      - `getDiffuseColor()`
      - `setDiffuseColor(Color)`

  - ### setSpecularColor

    public final void setSpecularColor(Color value)
    Sets the value of the `specularColor` property.
    Property description:
      The specular color of this `PhongMaterial`.
    Default value:
      null
    Parameters:
      `value` - the value for the `specularColor` property
    See Also:
      - `getSpecularColor()`
      - `specularColorProperty()`

  - ### getSpecularColor

    public final Color getSpecularColor()
    Gets the value of the `specularColor` property.
    Property description:
      The specular color of this `PhongMaterial`.
    Default value:
      null
    Returns:
      the value of the `specularColor` property
    See Also:
      - `setSpecularColor(Color)`
      - `specularColorProperty()`

  - ### specularColorProperty

    public final ObjectProperty<Color> specularColorProperty()
    The specular color of this `PhongMaterial`.
    Default value:
      null
    Returns:
      the `specularColor` property
    See Also:
      - `getSpecularColor()`
      - `setSpecularColor(Color)`

  - ### setSpecularPower

    public final void setSpecularPower(double value)
    Sets the value of the `specularPower` property.
    Property description:
      The specular power of this `PhongMaterial`.
    Default value:
      32.0
    Parameters:
      `value` - the value for the `specularPower` property
    See Also:
      - `getSpecularPower()`
      - `specularPowerProperty()`

  - ### getSpecularPower

    public final double getSpecularPower()
    Gets the value of the `specularPower` property.
    Property description:
      The specular power of this `PhongMaterial`.
    Default value:
      32.0
    Returns:
      the value of the `specularPower` property
    See Also:
      - `setSpecularPower(double)`
      - `specularPowerProperty()`

  - ### specularPowerProperty

    public final DoubleProperty specularPowerProperty()
    The specular power of this `PhongMaterial`.
    Default value:
      32.0
    Returns:
      the `specularPower` property
    See Also:
      - `getSpecularPower()`
      - `setSpecularPower(double)`

  - ### setDiffuseMap

    public final void setDiffuseMap(Image value)
    Sets the value of the `diffuseMap` property.
    Property description:
      The diffuse map of this `PhongMaterial`.
    Default value:
      null
    Parameters:
      `value` - the value for the `diffuseMap` property
    See Also:
      - `getDiffuseMap()`
      - `diffuseMapProperty()`

  - ### getDiffuseMap

    public final Image getDiffuseMap()
    Gets the value of the `diffuseMap` property.
    Property description:
      The diffuse map of this `PhongMaterial`.
    Default value:
      null
    Returns:
      the value of the `diffuseMap` property
    See Also:
      - `setDiffuseMap(Image)`
      - `diffuseMapProperty()`

  - ### diffuseMapProperty

    public final ObjectProperty<Image> diffuseMapProperty()
    The diffuse map of this `PhongMaterial`.
    Default value:
      null
    Returns:
      the `diffuseMap` property
    See Also:
      - `getDiffuseMap()`
      - `setDiffuseMap(Image)`

  - ### setSpecularMap

    public final void setSpecularMap(Image value)
    Sets the value of the `specularMap` property.
    Property description:
      The specular map of this `PhongMaterial`.
    Default value:
      null
    Parameters:
      `value` - the value for the `specularMap` property
    See Also:
      - `getSpecularMap()`
      - `specularMapProperty()`

  - ### getSpecularMap

    public final Image getSpecularMap()
    Gets the value of the `specularMap` property.
    Property description:
      The specular map of this `PhongMaterial`.
    Default value:
      null
    Returns:
      the value of the `specularMap` property
    See Also:
      - `setSpecularMap(Image)`
      - `specularMapProperty()`

  - ### specularMapProperty

    public final ObjectProperty<Image> specularMapProperty()
    The specular map of this `PhongMaterial`.
    Default value:
      null
    Returns:
      the `specularMap` property
    See Also:
      - `getSpecularMap()`
      - `setSpecularMap(Image)`

  - ### setBumpMap

    public final void setBumpMap(Image value)
    Sets the value of the `bumpMap` property.
    Property description:
      The bump map of this `PhongMaterial`, which is a normal map stored as a RGB `Image`.
    Default value:
      null
    Parameters:
      `value` - the value for the `bumpMap` property
    See Also:
      - `getBumpMap()`
      - `bumpMapProperty()`

  - ### getBumpMap

    public final Image getBumpMap()
    Gets the value of the `bumpMap` property.
    Property description:
      The bump map of this `PhongMaterial`, which is a normal map stored as a RGB `Image`.
    Default value:
      null
    Returns:
      the value of the `bumpMap` property
    See Also:
      - `setBumpMap(Image)`
      - `bumpMapProperty()`

  - ### bumpMapProperty

    public final ObjectProperty<Image> bumpMapProperty()
    The bump map of this `PhongMaterial`, which is a normal map stored as a RGB `Image`.
    Default value:
      null
    Returns:
      the `bumpMap` property
    See Also:
      - `getBumpMap()`
      - `setBumpMap(Image)`

  - ### setSelfIlluminationMap

    public final void setSelfIlluminationMap(Image value)
    Sets the value of the `selfIlluminationMap` property.
    Property description:
      The self illumination map of this `PhongMaterial`.
    Default value:
      null
    Parameters:
      `value` - the value for the `selfIlluminationMap` property
    See Also:
      - `getSelfIlluminationMap()`
      - `selfIlluminationMapProperty()`

  - ### getSelfIlluminationMap

    public final Image getSelfIlluminationMap()
    Gets the value of the `selfIlluminationMap` property.
    Property description:
      The self illumination map of this `PhongMaterial`.
    Default value:
      null
    Returns:
      the value of the `selfIlluminationMap` property
    See Also:
      - `setSelfIlluminationMap(Image)`
      - `selfIlluminationMapProperty()`

  - ### selfIlluminationMapProperty

    public final ObjectProperty<Image> selfIlluminationMapProperty()
    The self illumination map of this `PhongMaterial`.
    Default value:
      null
    Returns:
      the `selfIlluminationMap` property
    See Also:
      - `getSelfIlluminationMap()`
      - `setSelfIlluminationMap(Image)`