|
188 | 188 |
|
189 | 189 | function getObjectInfo(obj, geometry, material, initPos, initRot; r_obj=Modia3D.ZeroVector3D, R_obj=Modia3D.NullRotation, scale=ones(3)) |
190 | 190 | name = String(Modia3D.fullName(obj)) |
191 | | - return (; name=name, uuid=name2uuid(name), type=:Mesh, geometry=get(geometry, :uuid, nothing), material=get(material, :uuid, ""), position=initPos+initRot'*r_obj, rotation=Modia3D.rot123fromR(R_obj*initRot), scale=scale ) |
| 191 | + return (; name=name, uuid=name2uuid(name), type=:Mesh, geometry=get(geometry, :uuid, nothing), material=get(material, :uuid, ""), position=initPos+initRot'*r_obj, rotation=Modia3D.rot123fromR(R_obj*initRot), scale=scale) |
192 | 192 | end |
193 | 193 |
|
194 | 194 | printVisuMaterialToJSON(obj, visuMaterial) = nothing |
@@ -264,7 +264,7 @@ function addCameras!(object, uuid4, position, orientation) |
264 | 264 |
|
265 | 265 | name = "Perspective Camera" |
266 | 266 | uuid = string(UUIDs.uuid5(UUIDs.UUID(uuid4), name)) |
267 | | - camera = (; name=name, uuid=uuid, type="PerspectiveCamera", position=position, rotation=Modia3D.rot123fromR(SMatrix{3,3,Float64}(orientation))) |
| 267 | + camera = (; name=name, uuid=uuid, type="PerspectiveCamera", position=position, rotation=Modia3D.rot123fromR(orientation)) |
268 | 268 | push!(object.children, camera) |
269 | 269 |
|
270 | 270 | name="Orthographic Camera XY" |
|
286 | 286 | function createAnimationPositionTrack(tracks, animation, obj, iobj, r_obj) |
287 | 287 | keys = [] |
288 | 288 | for istep in 1:length(animation) |
289 | | - r_all = animation[istep].objectData[iobj].position + (Modia3D.from_q(SVector{4,Float64}(animation[istep].objectData[iobj].quaternion)))'*r_obj |
| 289 | + r_all = animation[istep].objectData[iobj].position + (Modia3D.from_q(animation[istep].objectData[iobj].quaternion))'*r_obj |
290 | 290 | push!(keys, (; time=animation[istep].time, value=r_all) ) |
291 | 291 | end |
292 | 292 | name = string(Modia3D.fullName(obj), ".position") |
|
296 | 296 | function createAnimationQuaternionTrack(tracks, animation, obj, iobj, R_obj) |
297 | 297 | keys = [] |
298 | 298 | for istep in 1:length(animation) |
299 | | - R_all = Modia3D.from_R(R_obj*Modia3D.from_q(SVector{4,Float64}(animation[istep].objectData[iobj].quaternion)) ) |
300 | | - push!(keys, (; time=animation[istep].time, value=R_all) ) |
| 299 | + q_all = Modia3D.absoluteRotation(animation[istep].objectData[iobj].quaternion, Modia3D.from_R(R_obj)) |
| 300 | + push!(keys, (; time=animation[istep].time, value=q_all) ) |
301 | 301 | end |
302 | 302 | name = string(Modia3D.fullName(obj), ".quaternion") |
303 | 303 | push!(tracks, (; name=name, uuid=name2uuid(name), type="quaternion", keys ) ) |
@@ -339,7 +339,7 @@ function exportAnimation(scene) |
339 | 339 | tracks = [] |
340 | 340 | for obj in allVisuElements |
341 | 341 | iobj = iobj + 1 |
342 | | - (r_obj, R_obj) = printObjectToJSON(object, elements, obj, initPos=animation[1].objectData[iobj].position, initRot=Modia3D.from_q(SVector{4,Float64}(animation[1].objectData[iobj].quaternion)) ) |
| 342 | + (r_obj, R_obj) = printObjectToJSON(object, elements, obj, initPos=animation[1].objectData[iobj].position, initRot=Modia3D.from_q(animation[1].objectData[iobj].quaternion)) |
343 | 343 | if !isnothing(R_obj) |
344 | 344 | createAnimationPositionTrack(tracks, animation, obj, iobj, r_obj) |
345 | 345 | createAnimationQuaternionTrack(tracks, animation, obj, iobj, R_obj) |
|
0 commit comments