obj

package
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 14, 2024 License: BSD-3-Clause Imports: 14 Imported by: 0

Documentation

Overview

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

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Decoder

type Decoder struct {
	FSys      fs.FS                // filesystem, used for all loading
	Objfile   string               // .obj filename within FSys
	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. It also implements the xyz.Decoder interface and an instance is registered to handle .obj files.

func (*Decoder) Decode

func (dec *Decoder) Decode(rs []io.Reader) error

Decode reads the given data and decodes into Decoder tmp vars. if 2 args are passed, first is .obj and second is .mtl

func (*Decoder) Desc

func (dec *Decoder) Desc() string

func (*Decoder) Destroy

func (dec *Decoder) Destroy()

Destroy deletes data created during loading

func (*Decoder) HasScene

func (dec *Decoder) HasScene() bool

func (*Decoder) New

func (dec *Decoder) New() xyz.Decoder

func (*Decoder) SetFileFS

func (dec *Decoder) SetFileFS(fsys fs.FS, fname string) ([]string, error)

func (*Decoder) SetGroup

func (dec *Decoder) SetGroup(sc *xyz.Scene, gp *xyz.Group)

SetGroup sets group with with all the decoded objects. calls Destroy after to free memory

func (*Decoder) SetMat

func (dec *Decoder) SetMat(sc *xyz.Scene, sld *xyz.Solid, matnm string)

SetMat sets the material for object

func (*Decoder) SetObject

func (dec *Decoder) SetObject(sc *xyz.Scene, objgp *xyz.Group, ob *Object)

SetObject sets the object as a group with each xyz.Solid as a mesh with unique material

func (*Decoder) SetScene

func (dec *Decoder) SetScene(sc *xyz.Scene)

SetScene sets group with with all the decoded objects.

type Face

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

func (*Face) Destroy

func (fc *Face) Destroy()

type Material

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    color.RGBA // Ambient color reflectivity
	Diffuse    color.RGBA // Diffuse color reflectivity
	Specular   color.RGBA // Specular color reflectivity
	Emissive   color.RGBA // Emissive color
	MapKd      string     // Texture file linked to diffuse color
	Tiling     xyz.Tiling // Tiling parameters: repeat and offset
}

Material contains all information about an object material

type Object

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

Object contains all information about one decoded object

func (*Object) Destroy

func (ob *Object) Destroy()

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL