renderFace3 method

void renderFace3(
  1. dynamic v1,
  2. dynamic v2,
  3. dynamic v3,
  4. dynamic element,
  5. Material material,
)

Implementation

void renderFace3(RenderableVertex v1,RenderableVertex v2,RenderableVertex v3, RenderableFace element, Material material) {
  info.vertices += 3;
  info.faces ++;
  String path = 'M' + convert(v1.positionScreen.x) + ',' + convert( v1.positionScreen.y ) + 'L' + convert( v2.positionScreen.x ) + ',' + convert( v2.positionScreen.y ) + 'L' + convert( v3.positionScreen.x ) + ',' + convert( v3.positionScreen.y ) + 'z';
  String style = '';

  if ( material is MeshBasicMaterial) {
    _color.copy(material.color);
    if ( material.vertexColors ) {
      _color.multiply(element.color);
    }
  }
  else if ( material is MeshLambertMaterial || material is MeshPhongMaterial || material is MeshStandardMaterial ) {
    _diffuseColor.copy( material.color );

    if ( material.vertexColors ) {
      _diffuseColor.multiply( element.color );
    }

    _color.copy( _ambientLight );
    _centroid.copy( v1.positionWorld ).add( v2.positionWorld ).add( v3.positionWorld ).divideScalar( 3 );
    calculateLight(lights!, _centroid, element.normalModel, _color);
    _color.multiply( _diffuseColor ).add(material.emissive!);

  }
  else if ( material is MeshNormalMaterial ) {
    _normal.copy( element.normalModel ).applyMatrix3( _normalViewMatrix ).normalize();
    _color.setRGB( _normal.x, _normal.y, _normal.z ).multiplyScalar( 0.5 ).addScalar( 0.5 );
  }

  String colorStyle = _color.getStyle();

  if ( material.wireframe ) {
    style = 'fill:none;stroke:$colorStyle;stroke-opacity:${material.opacity};stroke-width:${material.wireframeLinewidth};stroke-linecap:${material.wireframeLinecap};stroke-linejoin:${material.wireframeLinejoin}';
  }
  else {
    style = 'fill:$colorStyle;fill-opacity:${material.opacity}';
  }
  addPath(style, path);
}