engine: github.com/g3n/engine/loader/obj Index | Files

package obj

import "github.com/g3n/engine/loader/obj"

Package obj is used to parse the Wavefront OBJ file format (*.obj), including associated materials (*.mtl). Not all features of the OBJ format are supported. Basic format info: https://en.wikipedia.org/wiki/Wavefront_.obj_file

Index

Package Files

logger.go obj.go

type Decoder Uses

type Decoder struct {
    Objects   []Object             // decoded objects
    Matlib    string               // name of the material lib
    Materials map[string]*Material // maps material name to object
    Vertices  math32.ArrayF32      // vertices positions array
    Normals   math32.ArrayF32      // vertices normals
    Uvs       math32.ArrayF32      // vertices texture coordinates
    Warnings  []string             // warning messages
    // contains filtered or unexported fields
}

Decoder contains all decoded data from the obj and mtl files

func Decode Uses

func Decode(objpath string, mtlpath string) (*Decoder, error)

Decode decodes the specified obj and mtl files returning a decoder object and an error. Passing an empty string (or otherwise invalid path) to mtlpath will cause the decoder to check the 'mtllib' file in the OBJ if present, and fall back to a default material as a last resort.

func DecodeReader Uses

func DecodeReader(objreader, mtlreader io.Reader) (*Decoder, error)

DecodeReader decodes the specified obj and mtl readers returning a decoder object and an error if a problem was encoutered while parsing the OBJ.

Pass a valid io.Reader to override the materials defined in the OBJ file, or `nil` to use the materials listed in the OBJ's "mtllib" line (if present), a ".mtl" file with the same name as the OBJ file if presemt, or a default material as a last resort. No error will be returned for problems with materials--a gray default material will be used if nothing else works.

func (*Decoder) NewGeometry Uses

func (dec *Decoder) NewGeometry(obj *Object) (*geometry.Geometry, error)

NewGeometry generates and returns a geometry from the specified object

func (*Decoder) NewGroup Uses

func (dec *Decoder) NewGroup() (*core.Node, error)

NewGroup creates and returns a group containing as children meshes with all the decoded objects. A group is returned even if there is only one object decoded.

func (*Decoder) NewMesh Uses

func (dec *Decoder) NewMesh(obj *Object) (*graphic.Mesh, error)

NewMesh creates and returns a mesh from an specified decoded object.

type Face Uses

type Face struct {
    Vertices []int  // Indices to the face vertices
    Uvs      []int  // Indices to the face UV coordinates
    Normals  []int  // Indices to the face normals
    Material string // Material name
    Smooth   bool   // Smooth face
}

Face contains all information about an object face

type Material Uses

type Material struct {
    Name       string       // Material name
    Illum      int          // Illumination model
    Opacity    float32      // Opacity factor
    Refraction float32      // Refraction factor
    Shininess  float32      // Shininess (specular exponent)
    Ambient    math32.Color // Ambient color reflectivity
    Diffuse    math32.Color // Diffuse color reflectivity
    Specular   math32.Color // Specular color reflectivity
    Emissive   math32.Color // Emissive color
    MapKd      string       // Texture file linked to diffuse color
}

Material contains all information about an object material

type Object Uses

type Object struct {
    Name  string // Object name
    Faces []Face // Faces
    // contains filtered or unexported fields
}

Object contains all information about one decoded object

Package obj imports 17 packages (graph) and is imported by 6 packages. Updated 2019-03-21. Refresh now. Tools for package owners.