Class PolygonObjParser

java.lang.Object
org.apache.commons.geometry.io.euclidean.threed.obj.AbstractObjParser
org.apache.commons.geometry.io.euclidean.threed.obj.PolygonObjParser

public class PolygonObjParser extends AbstractObjParser
Low-level parser class for reading 3D polygon (face) data in the OBJ file format. This class provides access to OBJ data structures but does not retain any of the parsed data. For example, it is up to callers to store vertices as they are parsed for later reference. This allows callers to determine what values are stored and in what format.
  • Constructor Details

    • PolygonObjParser

      public PolygonObjParser(Reader reader)
      Construct a new instance for parsing OBJ content from the given reader.
      Parameters:
      reader - reader to parser content from
    • PolygonObjParser

      Construct a new instance for parsing OBJ content from the given text parser.
      Parameters:
      parser - text parser to read content from
  • Method Details

    • getVertexCount

      public int getVertexCount()
      Get the number of vertex keywords parsed so far.
      Returns:
      the number of vertex keywords parsed so far
    • getVertexNormalCount

      public int getVertexNormalCount()
      Get the number of vertex normal keywords parsed so far.
      Returns:
      the number of vertex normal keywords parsed so far
    • getTextureCoordinateCount

      Get the number of texture coordinate keywords parsed so far.
      Returns:
      the number of texture coordinate keywords parsed so far
    • isFailOnNonPolygonKeywords

      public boolean isFailOnNonPolygonKeywords()
      Return true if the instance is configured to throw an IllegalStateException when OBJ keywords not commonly used with files containing only polygon data are encountered. The default value is false, meaning that no keyword validation is performed. When set to true, only the following keywords are accepted:
      • v
      • vn
      • vt
      • f
      • o
      • g
      • s
      • mtllib
      • usemtl
      Returns:
      true if the instance is configured to fail when a non-polygon keyword is encountered
    • setFailOnNonPolygonKeywords

      public void setFailOnNonPolygonKeywords(boolean failOnNonPolygonKeywords)
      Set the flag determining if the instance should throw an IllegalStateException when encountering keywords not commonly used with OBJ files containing only polygon data. If true, only the following keywords are accepted:
      • v
      • vn
      • vt
      • f
      • o
      • g
      • s
      • mtllib
      • usemtl
      If false, all keywords are accepted.
      Parameters:
      failOnNonPolygonKeywords - new flag value
    • handleKeyword

      protected void handleKeyword(String keywordValue)
      Method called when a keyword is encountered in the parsed OBJ content. Subclasses should use this method to validate the keyword and/or update any internal state.
      Specified by:
      handleKeyword in class AbstractObjParser
      Parameters:
      keywordValue - keyword encountered in the OBJ content
    • readFace

      Read an OBJ face definition from the current line.
      Returns:
      OBJ face definition read from the current line
      Throws:
      IllegalStateException - if a face definition is not able to be parsed
      UncheckedIOException - if an I/O error occurs