Skip to content

Commit 81c2ba6

Browse files
committed
breaking: switched desired size vector to ptr, nil will keep original size
1 parent 8a717cd commit 81c2ba6

2 files changed

Lines changed: 14 additions & 9 deletions

File tree

main.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ func LoadPrimitives() error {
2424
// Get Model by mesh file or PrimitiveType.
2525
//
2626
// Note: requires LoadPrimitives() to be run beforehand if you want to get a primitive
27-
func GetModel(conf ModelReaderConf, desiredSize MeshTypes.Vector) (*MeshTypes.Mesh, error) {
27+
func GetModel(conf ModelReaderConf, desiredSize *MeshTypes.Vector) (*MeshTypes.Mesh, error) {
2828
var mesh *MeshTypes.Mesh
2929

3030
if conf.File != nil && conf.Filename != nil && *conf.Filename != "" {
@@ -41,7 +41,7 @@ func GetModel(conf ModelReaderConf, desiredSize MeshTypes.Vector) (*MeshTypes.Me
4141
if err != nil {
4242
return nil, err
4343
}
44-
mesh, err = FileHandlers.Load3DS(&data, &desiredSize)
44+
mesh, err = FileHandlers.Load3DS(&data, desiredSize)
4545
if err != nil {
4646
return nil, err
4747
}
@@ -54,7 +54,9 @@ func GetModel(conf ModelReaderConf, desiredSize MeshTypes.Vector) (*MeshTypes.Me
5454
}
5555
tempMesh := Primitives.Primitives[conf.PrimitiveType].Copy()
5656
mesh = &tempMesh
57-
mesh.ScaleToDimensions(&desiredSize)
57+
if desiredSize != nil {
58+
mesh.ScaleToDimensions(desiredSize)
59+
}
5860
}
5961

6062
return mesh, nil

pkg/file_handlers/gltf.go

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import (
1010
"github.com/qmuntal/gltf"
1111
)
1212

13-
func LoadGLTF(file io.Reader, desiredSize Types.Vector) ([]*Types.Mesh, error) {
13+
func LoadGLTF(file io.Reader, desiredSize *Types.Vector) ([]*Types.Mesh, error) {
1414
var doc gltf.Document
1515
gltf.NewDecoder(file).Decode(&doc)
1616

@@ -20,11 +20,14 @@ func LoadGLTF(file io.Reader, desiredSize Types.Vector) ([]*Types.Mesh, error) {
2020
for _, p := range m.Primitives {
2121
// contains Min and Max attr (for dimension calc)
2222
posAccessor := doc.Accessors[p.Attributes[gltf.POSITION]]
23-
scaling := Types.Vector{
24-
// axes inverted to convert to correct coordinate system
25-
X: desiredSize.X / (posAccessor.Max[0] - posAccessor.Min[0]),
26-
Y: desiredSize.Y / (posAccessor.Max[2] - posAccessor.Min[2]),
27-
Z: desiredSize.Z / (posAccessor.Max[1] - posAccessor.Min[1]),
23+
scaling := Types.Vector{X: 1, Y: 1, Z: 1}
24+
if desiredSize != nil {
25+
scaling = Types.Vector{
26+
// axes inverted to convert to correct coordinate system
27+
X: desiredSize.X / (posAccessor.Max[0] - posAccessor.Min[0]),
28+
Y: desiredSize.Y / (posAccessor.Max[2] - posAccessor.Min[2]),
29+
Z: desiredSize.Z / (posAccessor.Max[1] - posAccessor.Min[1]),
30+
}
2831
}
2932
positions, err := gltfVec3(&doc, posAccessor, scaling)
3033
if err != nil {

0 commit comments

Comments
 (0)