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

    - ### Methods inherited from class java.lang.Object

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

- - ### Property Detail

    - #### diffuseColor

          public final ObjectProperty<Color> diffuseColorProperty

      The diffuse color of this `PhongMaterial`.
      Default value:
        Color.WHITE
      See Also:
        `getDiffuseColor()`, `setDiffuseColor(Color)`

    - #### specularColor

          public final ObjectProperty<Color> specularColorProperty

      The specular color of this `PhongMaterial`.
      Default value:
        null
      See Also:
        `getSpecularColor()`, `setSpecularColor(Color)`

    - #### specularPower

          public final DoubleProperty specularPowerProperty

      The specular power of this `PhongMaterial`.
      Default value:
        32.0
      See Also:
        `getSpecularPower()`, `setSpecularPower(double)`

    - #### diffuseMap

          public final ObjectProperty<Image> diffuseMapProperty

      The diffuse map of this `PhongMaterial`.
      Default value:
        null
      See Also:
        `getDiffuseMap()`, `setDiffuseMap(Image)`

    - #### specularMap

          public final ObjectProperty<Image> specularMapProperty

      The specular map of this `PhongMaterial`.
      Default value:
        null
      See Also:
        `getSpecularMap()`, `setSpecularMap(Image)`

    - #### 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)`

    - #### selfIlluminationMap

          public final ObjectProperty<Image> selfIlluminationMapProperty

      The self illumination map of this `PhongMaterial`.
      Default value:
        null
      See Also:
        `getSelfIlluminationMap()`, `setSelfIlluminationMap(Image)`

  - ### Constructor Detail

    - #### 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 Detail

    - #### setDiffuseColor

          public final void setDiffuseColor​(Color value)

      Sets the value of the property diffuseColor.
      Property description:
        The diffuse color of this `PhongMaterial`.
      Default value:
        Color.WHITE

    - #### getDiffuseColor

          public final Color getDiffuseColor()

      Gets the value of the property diffuseColor.
      Property description:
        The diffuse color of this `PhongMaterial`.
      Default value:
        Color.WHITE

    - #### diffuseColorProperty

          public final ObjectProperty<Color> diffuseColorProperty()

      The diffuse color of this `PhongMaterial`.
      Default value:
        Color.WHITE
      See Also:
        `getDiffuseColor()`, `setDiffuseColor(Color)`

    - #### setSpecularColor

          public final void setSpecularColor​(Color value)

      Sets the value of the property specularColor.
      Property description:
        The specular color of this `PhongMaterial`.
      Default value:
        null

    - #### getSpecularColor

          public final Color getSpecularColor()

      Gets the value of the property specularColor.
      Property description:
        The specular color of this `PhongMaterial`.
      Default value:
        null

    - #### specularColorProperty

          public final ObjectProperty<Color> specularColorProperty()

      The specular color of this `PhongMaterial`.
      Default value:
        null
      See Also:
        `getSpecularColor()`, `setSpecularColor(Color)`

    - #### setSpecularPower

          public final void setSpecularPower​(double value)

      Sets the value of the property specularPower.
      Property description:
        The specular power of this `PhongMaterial`.
      Default value:
        32.0

    - #### getSpecularPower

          public final double getSpecularPower()

      Gets the value of the property specularPower.
      Property description:
        The specular power of this `PhongMaterial`.
      Default value:
        32.0

    - #### specularPowerProperty

          public final DoubleProperty specularPowerProperty()

      The specular power of this `PhongMaterial`.
      Default value:
        32.0
      See Also:
        `getSpecularPower()`, `setSpecularPower(double)`

    - #### setDiffuseMap

          public final void setDiffuseMap​(Image value)

      Sets the value of the property diffuseMap.
      Property description:
        The diffuse map of this `PhongMaterial`.
      Default value:
        null

    - #### getDiffuseMap

          public final Image getDiffuseMap()

      Gets the value of the property diffuseMap.
      Property description:
        The diffuse map of this `PhongMaterial`.
      Default value:
        null

    - #### diffuseMapProperty

          public final ObjectProperty<Image> diffuseMapProperty()

      The diffuse map of this `PhongMaterial`.
      Default value:
        null
      See Also:
        `getDiffuseMap()`, `setDiffuseMap(Image)`

    - #### setSpecularMap

          public final void setSpecularMap​(Image value)

      Sets the value of the property specularMap.
      Property description:
        The specular map of this `PhongMaterial`.
      Default value:
        null

    - #### getSpecularMap

          public final Image getSpecularMap()

      Gets the value of the property specularMap.
      Property description:
        The specular map of this `PhongMaterial`.
      Default value:
        null

    - #### specularMapProperty

          public final ObjectProperty<Image> specularMapProperty()

      The specular map of this `PhongMaterial`.
      Default value:
        null
      See Also:
        `getSpecularMap()`, `setSpecularMap(Image)`

    - #### setBumpMap

          public final void setBumpMap​(Image value)

      Sets the value of the property bumpMap.
      Property description:
        The bump map of this `PhongMaterial`, which is a normal map stored as a RGB `Image`.
      Default value:
        null

    - #### getBumpMap

          public final Image getBumpMap()

      Gets the value of the property bumpMap.
      Property description:
        The bump map of this `PhongMaterial`, which is a normal map stored as a RGB `Image`.
      Default value:
        null

    - #### 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
      See Also:
        `getBumpMap()`, `setBumpMap(Image)`

    - #### setSelfIlluminationMap

          public final void setSelfIlluminationMap​(Image value)

      Sets the value of the property selfIlluminationMap.
      Property description:
        The self illumination map of this `PhongMaterial`.
      Default value:
        null

    - #### getSelfIlluminationMap

          public final Image getSelfIlluminationMap()

      Gets the value of the property selfIlluminationMap.
      Property description:
        The self illumination map of this `PhongMaterial`.
      Default value:
        null

    - #### selfIlluminationMapProperty

          public final ObjectProperty<Image> selfIlluminationMapProperty()

      The self illumination map of this `PhongMaterial`.
      Default value:
        null
      See Also:
        `getSelfIlluminationMap()`, `setSelfIlluminationMap(Image)`

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`