Skip to content

Commit 128d5c3

Browse files
committed
Fix GLTF object animation values
1 parent 03315a2 commit 128d5c3

File tree

1 file changed

+19
-3
lines changed

1 file changed

+19
-3
lines changed

Sources/GateEngine/Resources/Import & Export/Importers/GLTransmissionFormat.swift

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1147,14 +1147,15 @@ extension GLTransmissionFormat: ObjectAnimation3DImporter {
11471147
var objectAnimation = ObjectAnimation3D.Animation()
11481148

11491149
var timeMax: Float = .nan
1150+
var timeMin: Float = .nan
11501151

11511152
for channel in animation.channels {
11521153
let sampler = animation.samplers[channel.sampler]
11531154

1154-
guard let times: [Float] = await gltf.values(forAccessor: sampler.input) else {
1155+
guard let times: [Float] = await gltf.animationValues(forAccessor: sampler.input) else {
11551156
continue
11561157
}
1157-
guard let values: [Float] = await gltf.values(forAccessor: sampler.output) else {
1158+
guard let values: [Float] = await gltf.animationValues(forAccessor: sampler.output) else {
11581159
continue
11591160
}
11601161

@@ -1213,8 +1214,23 @@ extension GLTransmissionFormat: ObjectAnimation3DImporter {
12131214
break
12141215
}
12151216

1216-
timeMax = .maximum(times.max()!, timeMax)
1217+
if let max = times.max() {
1218+
timeMax = .maximum(max, timeMax)
1219+
}
1220+
if let min = times.min() {
1221+
timeMin = .minimum(min, timeMin)
1222+
}
12171223
}
1224+
1225+
var duration = timeMax - timeMin
1226+
if duration.isFinite == false {
1227+
duration = 0
1228+
}
1229+
1230+
// Slide animation to start at time zero
1231+
objectAnimation.positionOutput.times = objectAnimation.positionOutput.times.map({$0 - timeMin})
1232+
objectAnimation.rotationOutput.times = objectAnimation.rotationOutput.times.map({$0 - timeMin})
1233+
objectAnimation.scaleOutput.times = objectAnimation.scaleOutput.times.map({$0 - timeMin})
12181234

12191235
return ObjectAnimation3DBackend(name: animation.name, duration: timeMax, animation: objectAnimation)
12201236
}

0 commit comments

Comments
 (0)