Swift framework for loading various 3d models in SceneKit

Overview

AssetImportKit

AssetImportKit is a cross platform library (macOS, iOS) that coverts the files supported by Assimp to SceneKit scenes.

Features

AssetImportKit allows you to import Assimp supported file formats directly in SceneKit at runtime. The library supports:

  • Geometry
  • Materials (with color, embedded textures and external textures)
  • Cameras and
  • Skeletal animations.
  • Serialization to .scn format

Requirements

  • Xcode 10 or later
  • Swift 5.0
  • iOS 10.3 or later
  • macOS 10.12 or later

Installation via CocoaPods

pod 'AssetImportKit'

Usage

do {
  let assimpScene = try SCNScene.assimpScene(filePath: filePath,
                                              postProcessSteps: [.defaultQuality])
  let modelScene = assimpScene.modelScene
  modelScene.rootNode.childNodes.forEach {
    sceneView.scene?.rootNode.addChildNode($0)
  }
} catch {
  debugPrint(error.localizedDescription)
}

License

AssetImportKit's license is based on 3-clause BSD-License.

Comments
  • Scene importing failed for filePath

    Scene importing failed for filePath

    Scene importing failed for filePath art.scnassets/Matterport.obj Scene importing failed with error

    ================================================================= Main Thread Checker: UI API called on a background thread: -[UIApplication applicationState] PID: 11317, TID: 2836974, Thread name: com.apple.CoreMotion.MotionThread, Queue name: com.apple.root.default-qos.overcommit, QoS: 0 Backtrace: 4 libobjc.A.dylib 0x00000001c0a13894 + 56 5 CoreMotion 0x00000001c7299040 CoreMotion + 307264 6 CoreMotion 0x00000001c7299574 CoreMotion + 308596 7 CoreMotion 0x00000001c7299484 CoreMotion + 308356 8 CoreMotion 0x00000001c72cac64 CoreMotion + 511076 9 CoreMotion 0x00000001c72cacc4 CoreMotion + 511172 10 CoreFoundation 0x00000001c17aa4fc + 28 11 CoreFoundation 0x00000001c17a9de0 + 276 12 CoreFoundation 0x00000001c17a50e4 + 2324 13 CoreFoundation 0x00000001c17a44b8 CFRunLoopRunSpecific + 452 14 CoreFoundation 0x00000001c17a521c CFRunLoopRun + 84 15 CoreMotion 0x00000001c72ca5fc CoreMotion + 509436 16 libsystem_pthread.dylib 0x00000001c141f974 + 132 17 libsystem_pthread.dylib 0x00000001c141f8d0 _pthread_start + 52 18 libsystem_pthread.dylib 0x00000001c1427ddc thread_start + 4 2019-01-27 23:13:06.907691-0500 Capstone[11317:2836974] [reports] Main Thread Checker: UI API called on a background thread: -[UIApplication applicationState] PID: 11317, TID: 2836974, Thread name: com.apple.CoreMotion.MotionThread, Queue name: com.apple.root.default-qos.overcommit, QoS: 0 Backtrace: 4 libobjc.A.dylib 0x00000001c0a13894 + 56 5 CoreMotion 0x00000001c7299040 CoreMotion + 307264 6 CoreMotion 0x00000001c7299574 CoreMotion + 308596 7 CoreMotion 0x00000001c7299484 CoreMotion + 308356 8 CoreMotion 0x00000001c72cac64 CoreMotion + 511076 9 CoreMotion 0x00000001c72cacc4 CoreMotion + 511172 10 CoreFoundation 0x00000001c17aa4fc + 28 11 CoreFoundation 0x00000001c17a9de0 + 276 12 CoreFoundation 0x00000001c17a50e4 + 2324 13 CoreFoundation 0x00000001c17a44b8 CFRunLoopRunSpecific + 452 14 CoreFoundation 0x00000001c17a521c CFRunLoopRun + 84 15 CoreMotion 0x00000001c72ca5fc CoreMotion + 509436 16 libsystem_pthread.dylib 0x00000001c141f974 + 132 17 libsystem_pthread.dylib 0x00000001c141f8d0 _pthread_start + 52 18 libsystem_pthread.dylib 0x00000001c1427ddc thread_start + 4

    opened by JSSjogren 6
  • Do you have any sample code that loads fbx animation? (I have it loading fbx)

    Do you have any sample code that loads fbx animation? (I have it loading fbx)

    I can see the method.

      public func addAnimation(from animNode: SCNNode,
                                 forKey animKey: String,
                                 with settings: AssetImporterAnimSettings,
                                 hasEvents: inout Bool,
                                 hasDelegate: inout Bool)
    

    looking for just a sample / snippet of code to load an fbx animation and associate / or trigger. My project loads t-pose model from fbx https://github.com/johndpope/demo-unistroy

    just want to bring it alive now I've seen this (related?) code in objective-c ... My fbx has an animation out of the box.....

    print("animations:",assimpScene.animations)
    animations: {
        "ely-1" = "<AssetImportKit.AssetImporterAnimation: 0x281757f00>";
    }
    
    

    how can I trigger this to play?

    my

    
      // Load the animation scene
        if (self.animFilePath)
        {
            SCNAssimpScene *animScene =
                [SCNScene assimpSceneWithURL:[NSURL URLWithString:self.animFilePath]
                            postProcessFlags:AssimpKit_Process_FlipUVs |
                                             AssimpKit_Process_Triangulate];
            NSArray *animationKeys = animScene.animationKeys;
            // If multiple animations exist, load the first animation
            if (animationKeys.count > 0)
            {
                SCNAssimpAnimSettings *settings =
                    [[SCNAssimpAnimSettings alloc] init];
                settings.repeatCount = 3;
    
                NSString *key = [animationKeys objectAtIndex:0];
                SCNAnimationEventBlock eventBlock =
                    ^(CAAnimation *animation, id animatedObject,
                      BOOL playingBackward) {
                      NSLog(@" Animation Event triggered ");
    
                      // To test removing animation uncomment
                      // Then the animation wont repeat 3 times
                      // as it will be removed after 90% of the first loop
                      // is completed, as event key time is 0.9
                      // [scene.rootNode removeAnimationSceneForKey:key
                      //                            fadeOutDuration:0.3];
                      // [scene.rootNode pauseAnimationSceneForKey:key];
                      // [scene.rootNode resumeAnimationSceneForKey:key];
                    };
                SCNAnimationEvent *animEvent =
                    [SCNAnimationEvent animationEventWithKeyTime:0.5f
                                                           block:eventBlock];
                NSArray *animEvents =
                    [[NSArray alloc] initWithObjects:animEvent, nil];
                settings.animationEvents = animEvents;
                settings.delegate = self;
    
                SCNScene *animation = [animScene animationSceneForKey:key];
                [scene.modelScene.rootNode addAnimationScene:animation
                                                      forKey:key
                                                withSettings:settings];
            }
        }
    

    seems like I need AssetImporterAnimSettings

    @IBAction func unzipButton() {
            //                   unzipFile()
            
            if let pathToObject = Bundle.main.path(forResource: "ely", ofType: "fbx") {
                
                let scaleFactor:Float = 0.0025
                
                do {
                    //            let assimpScene = try SCNScene.assimpScene(filePath: pathToObject, postProcessSteps: [.optimizeGraph, .optimizeMeshes]) //для дае
                    let assimpScene = try SCNScene.assimpScene(filePath: pathToObject, postProcessSteps:[.defaultQuality])
                    
                    print("skeletonNode:",assimpScene.skeletonNode)
                    print("animations:",assimpScene.animations)
                    
                    let modelScene = assimpScene.modelScene!
                    modelScene.rootNode.childNodes.forEach {
                        $0.position =   $0.position * scaleFactor
                        $0.scale = $0.scale * scaleFactor
                        sceneView.scene.rootNode.addChildNode($0)
                        self.robotNode = $0
                        
                    }
                    
                    for animation in assimpScene.animations{
                        
                        if let animation = animation as? AssetImporterAnimation{
                            print("animation:",animation.frameAnims)
                        }
                    }
                    
                    for (index,animScene) in assimpScene.animationScenes{
                        print("animScene:",animScene)
                        if let animScene = animScene as? SCNScene{
                            var settings = AssetImporterAnimSettings()
                            settings.delegate = self
                            settings.repeatCount = 3
                            let eventBlock: SCNAnimationEventBlock = { animation, animatedObject, playingBackwards in
                                print("Animation Event triggered")
                            }
                            
                            let animEvent = SCNAnimationEvent.init(keyTime: 0.5, block: eventBlock)
                            let animEvents = [animEvent]
                            settings.animationEvents = animEvents
                            //self.robotNode?.addAnimationScene(animScene, forKey: "ely-1", with: settings)
                            sceneView.scene.rootNode.addAnimationScene(animScene, forKey: "ely-1", with: settings)
    
                        }
                    }
                    
                }catch {
                
                }
            }
        }
    

    UPDATE

    it seems makeAnimationScenes does this automagically..... is there something I'm missing to trigger them?

    https://dmsurti.github.io/AssimpKit/appledocs/html/index.html

    Screen Shot 2020-08-08 at 12 08 17 pm
    
    2020-08-10 15:54:59.747870+1000 demo-uni[3668:1289525] Metal GPU Frame Capture Enabled
    2020-08-10 15:54:59.748448+1000 demo-uni[3668:1289525] Metal API Validation Enabled
    2020-08-10 15:54:59.906564+1000 demo-uni[3668:1289525] [LayoutConstraints] Unable to simultaneously satisfy constraints.
    	Probably at least one of the constraints in the following list is one you don't want. 
    	Try this: 
    		(1) look at each constraint and try to figure out which you don't expect; 
    		(2) find the code that added the unwanted constraint or constraints and fix it. 
    (
        "<NSLayoutConstraint:0x280b6acb0 UILayoutGuide:0x28113a760'UIViewSafeAreaLayoutGuide'.top == UIView:0x103b2dc30.top + 11   (active)>",
        "<NSLayoutConstraint:0x280b6aee0 V:|-(9)-[UIView:0x103b2dc30]   (active, names: '|':UIView:0x103b2cc50 )>",
        "<NSLayoutConstraint:0x280b6ad00 'UIViewSafeAreaLayoutGuide-top' V:|-(0)-[UILayoutGuide:0x28113a760'UIViewSafeAreaLayoutGuide']   (active, names: '|':UIView:0x103b2cc50 )>"
    )
    
    Will attempt to recover by breaking constraint 
    <NSLayoutConstraint:0x280b6acb0 UILayoutGuide:0x28113a760'UIViewSafeAreaLayoutGuide'.top == UIView:0x103b2dc30.top + 11   (active)>
    
    Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
    The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKitCore/UIView.h> may also be helpful.
    2020-08-10 15:54:59.991548+1000 demo-uni[3668:1289525] [LayoutConstraints] Unable to simultaneously satisfy constraints.
    	Probably at least one of the constraints in the following list is one you don't want. 
    	Try this: 
    		(1) look at each constraint and try to figure out which you don't expect; 
    		(2) find the code that added the unwanted constraint or constraints and fix it. 
    (
        "<NSLayoutConstraint:0x280b6ac60 UIView:0x103b2dc30.width == 104   (active)>",
        "<NSLayoutConstraint:0x280b6ae40 H:[UIView:0x103b2dc30]-(135.5)-|   (active, names: '|':UIView:0x103b2cc50 )>",
        "<NSLayoutConstraint:0x280b6ae90 H:|-(135.5)-[UIView:0x103b2dc30]   (active, names: '|':UIView:0x103b2cc50 )>",
        "<NSLayoutConstraint:0x280b07d90 'UIView-Encapsulated-Layout-Width' UIView:0x103b2cc50.width == 414   (active)>"
    )
    
    Will attempt to recover by breaking constraint 
    <NSLayoutConstraint:0x280b6ac60 UIView:0x103b2dc30.width == 104   (active)>
    
    Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
    The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKitCore/UIView.h> may also be helpful.
    =================================================================
    Main Thread Checker: UI API called on a background thread: -[UIView center]
    PID: 3668, TID: 1289732, Thread name: com.apple.scenekit.scnview-renderer, Queue name: com.apple.scenekit.renderingQueue.ARSCNView0x103c17fd0, QoS: 33
    Backtrace:
    4   demo-uni                            0x0000000102049e9c $s8demo_uni13WallChainsSetC9sceneViewACSo9ARSCNViewC_tcfc + 516
    5   demo-uni                            0x0000000102049c88 $s8demo_uni13WallChainsSetC9sceneViewACSo9ARSCNViewC_tcfC + 56
    6   demo-uni                            0x000000010206dd0c $s8demo_uni14ViewControllerC13wallChainsSetAA04WallfG0Cvg + 404
    7   demo-uni                            0x0000000102070134 $s8demo_uni14ViewControllerC8renderer_12updateAtTimeySo16SCNSceneRenderer_p_SdtF + 216
    8   demo-uni                            0x00000001020701f4 $s8demo_uni14ViewControllerC8renderer_12updateAtTimeySo16SCNSceneRenderer_p_SdtFTo + 80
    9   SceneKit                            0x00000001a19f9244 C0BD5E5F-5534-3E55-8C5E-117A3C96F734 + 1483332
    10  SceneKit                            0x00000001a19fba4c C0BD5E5F-5534-3E55-8C5E-117A3C96F734 + 1493580
    11  SceneKit                            0x00000001a19fc028 C0BD5E5F-5534-3E55-8C5E-117A3C96F734 + 1495080
    12  SceneKit                            0x00000001a19fc3f8 C0BD5E5F-5534-3E55-8C5E-117A3C96F734 + 1496056
    13  SceneKit                            0x00000001a1a9ac7c C0BD5E5F-5534-3E55-8C5E-117A3C96F734 + 2145404
    14  ARKit                               0x00000001a956809c A0E267E8-217F-3175-97D2-B922D090597E + 1085596
    15  SceneKit                            0x00000001a19582d8 C0BD5E5F-5534-3E55-8C5E-117A3C96F734 + 824024
    16  SceneKit                            0x00000001a1a64dc4 C0BD5E5F-5534-3E55-8C5E-117A3C96F734 + 1924548
    17  libdispatch.dylib                   0x00000001037c318c _dispatch_client_callout + 20
    18  libdispatch.dylib                   0x00000001037d2c34 _dispatch_lane_barrier_sync_invoke_and_complete + 176
    19  SceneKit                            0x00000001a1a64d48 C0BD5E5F-5534-3E55-8C5E-117A3C96F734 + 1924424
    20  GPUToolsCore                        0x0000000103a08114 -[DYDisplayLinkInterposer forwardDisplayLinkCallback:] + 172
    21  QuartzCore                          0x00000001939bb354 37156F21-0D15-38C3-9745-B1F78F698DA8 + 74580
    22  QuartzCore                          0x0000000193a8b1a4 37156F21-0D15-38C3-9745-B1F78F698DA8 + 926116
    23  CoreFoundation                      0x000000018cde9584 9624AAFD-5437-3772-A507-0F357875808D + 537988
    24  CoreFoundation                      0x000000018ce13f44 9624AAFD-5437-3772-A507-0F357875808D + 712516
    25  CoreFoundation                      0x000000018ce135e8 9624AAFD-5437-3772-A507-0F357875808D + 710120
    26  CoreFoundation                      0x000000018ce0e0e0 9624AAFD-5437-3772-A507-0F357875808D + 688352
    27  CoreFoundation                      0x000000018ce0d660 CFRunLoopRunSpecific + 480
    28  Foundation                          0x000000018d1576a8 2B7BD2F3-10A8-3CBA-9DE3-5E1F48D9213E + 34472
    29  SceneKit                            0x00000001a19586e0 C0BD5E5F-5534-3E55-8C5E-117A3C96F734 + 825056
    30  SceneKit                            0x00000001a1958968 C0BD5E5F-5534-3E55-8C5E-117A3C96F734 + 825704
    31  libsystem_pthread.dylib             0x000000018cb9d8fc _pthread_start + 168
    32  libsystem_pthread.dylib             0x000000018cba59d4 thread_start + 8
    2020-08-10 15:55:00.085690+1000 demo-uni[3668:1289732] [reports] Main Thread Checker: UI API called on a background thread: -[UIView center]
    PID: 3668, TID: 1289732, Thread name: com.apple.scenekit.scnview-renderer, Queue name: com.apple.scenekit.renderingQueue.ARSCNView0x103c17fd0, QoS: 33
    Backtrace:
    4   demo-uni                            0x0000000102049e9c $s8demo_uni13WallChainsSetC9sceneViewACSo9ARSCNViewC_tcfc + 516
    5   demo-uni                            0x0000000102049c88 $s8demo_uni13WallChainsSetC9sceneViewACSo9ARSCNViewC_tcfC + 56
    6   demo-uni                            0x000000010206dd0c $s8demo_uni14ViewControllerC13wallChainsSetAA04WallfG0Cvg + 404
    7   demo-uni                            0x0000000102070134 $s8demo_uni14ViewControllerC8renderer_12updateAtTimeySo16SCNSceneRenderer_p_SdtF + 216
    8   demo-uni                            0x00000001020701f4 $s8demo_uni14ViewControllerC8renderer_12updateAtTimeySo16SCNSceneRenderer_p_SdtFTo + 80
    9   SceneKit                            0x00000001a19f9244 C0BD5E5F-5534-3E55-8C5E-117A3C96F734 + 1483332
    10  SceneKit                            0x00000001a19fba4c C0BD5E5F-5534-3E55-8C5E-117A3C96F734 + 1493580
    11  SceneKit                            0x00000001a19fc028 C0BD5E5F-5534-3E55-8C5E-117A3C96F734 + 1495080
    12  SceneKit                            0x00000001a19fc3f8 C0BD5E5F-5534-3E55-8C5E-117A3C96F734 + 1496056
    13  SceneKit                            0x00000001a1a9ac7c C0BD5E5F-5534-3E55-8C5E-117A3C96F734 + 2145404
    14  ARKit                               0x00000001a956809c A0E267E8-217F-3175-97D2-B922D090597E + 1085596
    15  SceneKit                            0x00000001a19582d8 C0BD5E5F-5534-3E55-8C5E-117A3C96F734 + 824024
    16  SceneKit                            0x00000001a1a64dc4 C0BD5E5F-5534-3E55-8C5E-117A3C96F734 + 1924548
    17  libdispatch.dylib                   0x00000001037c318c _dispatch_client_callout + 20
    18  libdispatch.dylib                   0x00000001037d2c34 _dispatch_lane_barrier_sync_invoke_and_complete + 176
    19  SceneKit                            0x00000001a1a64d48 C0BD5E5F-5534-3E55-8C5E-117A3C96F734 + 1924424
    20  GPUToolsCore                        0x0000000103a08114 -[DYDisplayLinkInterposer forwardDisplayLinkCallback:] + 172
    21  QuartzCore                          0x00000001939bb354 37156F21-0D15-38C3-9745-B1F78F698DA8 + 74580
    22  QuartzCore                          0x0000000193a8b1a4 37156F21-0D15-38C3-9745-B1F78F698DA8 + 926116
    23  CoreFoundation                      0x000000018cde9584 9624AAFD-5437-3772-A507-0F357875808D + 537988
    24  CoreFoundation                      0x000000018ce13f44 9624AAFD-5437-3772-A507-0F357875808D + 712516
    25  CoreFoundation                      0x000000018ce135e8 9624AAFD-5437-3772-A507-0F357875808D + 710120
    26  CoreFoundation                      0x000000018ce0e0e0 9624AAFD-5437-3772-A507-0F357875808D + 688352
    27  CoreFoundation                      0x000000018ce0d660 CFRunLoopRunSpecific + 480
    28  Foundation                          0x000000018d1576a8 2B7BD2F3-10A8-3CBA-9DE3-5E1F48D9213E + 34472
    29  SceneKit                            0x00000001a19586e0 C0BD5E5F-5534-3E55-8C5E-117A3C96F734 + 825056
    30  SceneKit                            0x00000001a1958968 C0BD5E5F-5534-3E55-8C5E-117A3C96F734 + 825704
    31  libsystem_pthread.dylib             0x000000018cb9d8fc _pthread_start + 168
    32  libsystem_pthread.dylib             0x000000018cba59d4 thread_start + 8
    2020-08-10 15:55:08.130319+1000 demo-uni[3668:1289732] [SceneKit] Error: Scene <SCNScene: 0x281d34600> is modified within a rendering callback of another scene (<SCNScene: 0x281d3f180>). This is not allowed and may lead to crash
    2020-08-10 15:55:09.326974+1000 demo-uni[3668:1289820] [Technique] World tracking performance is being affected by resource constraints [1]
    2020-08-10 15:55:09.327135+1000 demo-uni[3668:1289820] [Technique] VIO error callback: 188258.653859, 1, Frame processing rate has fallen below pre-set threshold
    2020-08-10 15:55:09.738028+1000 demo-uni[3668:1289820] [Technique] VIO error callback: 188259.053859, 1, Frame processing rate has fallen below pre-set threshold
    2020-08-10 15:55:09.788730+1000 demo-uni[3668:1289820] [Technique] VIO error callback: 188259.153859, 1, Frame processing rate has fallen below pre-set threshold
    2020-08-10 15:55:09.871152+1000 demo-uni[3668:1289820] [Technique] VIO error callback: 188259.253859, 1, Frame processing rate has fallen below pre-set threshold
    2020-08-10 15:55:09.969366+1000 demo-uni[3668:1289820] [Technique] VIO error callback: 188259.353859, 1, Frame processing rate has fallen below pre-set threshold
    2020-08-10 15:55:10.068804+1000 demo-uni[3668:1289820] [Technique] VIO error callback: 188259.453859, 1, Frame processing rate has fallen below pre-set threshold
    2020-08-10 15:55:10.173277+1000 demo-uni[3668:1289820] [Technique] VIO error callback: 188259.553859, 1, Frame processing rate has fallen below pre-set threshold
    2020-08-10 15:55:28.237068+1000 demo-uni[3668:1289525] dynamic_cast error 2: One or more of the following type_info's has hidden visibility or is defined in more than one translation unit. They should all have public visibility. N6Assimp3FBX6ObjectE, N6Assimp3FBX5ModelE, N6Assimp3FBX5ModelE.
    2020-08-10 15:55:28.237121+1000 demo-uni[3668:1289525] dynamic_cast error 2: One or more of the following type_info's has hidden visibility or is defined in more than one translation unit. They should all have public visibility. N6Assimp3FBX6ObjectE, N6Assimp3FBX5ModelE, N6Assimp3FBX5ModelE.
    2020-08-10 15:55:28.237936+1000 demo-uni[3668:1289525] dynamic_cast error 2: One or more of the following type_info's has hidden visibility or is defined in more than one translation unit. They should all have public visibility. N6Assimp3FBX6ObjectE, N6Assimp3FBX5ModelE, N6Assimp3FBX5ModelE.
    2020-08-10 15:55:28.238088+1000 demo-uni[3668:1289525] dynamic_cast error 2: One or more of the following type_info's has hidden visibility or is defined in more than one translation unit. They should all have public visibility. N6Assimp3FBX6ObjectE, N6Assimp3FBX5ModelE, N6Assimp3FBX5ModelE.
    2020-08-10 15:55:28.238326+1000 demo-uni[3668:1289525] dynamic_cast error 2: One or more of the following type_info's has hidden visibility or is defined in more than one translation unit. They should all have public visibility. N6Assimp3FBX6ObjectE, N6Assimp3FBX5ModelE, N6Assimp3FBX5ModelE.
    2020-08-10 15:55:28.238777+1000 demo-uni[3668:1289525] dynamic_cast error 2: One or more of the following type_info's has hidden visibility or is defined in more than one translation unit. They should all have public visibility. N6Assimp3FBX6ObjectE, N6Assimp3FBX5ModelE, N6Assimp3FBX5ModelE.
    2020-08-10 15:55:28.239647+1000 demo-uni[3668:1289525] dynamic_cast error 2: One or more of the following type_info's has hidden visibility or is defined in more than one translation unit. They should all have public visibility. N6Assimp3FBX6ObjectE, N6Assimp3FBX5ModelE, N6Assimp3FBX5ModelE.
    2020-08-10 15:55:28.241327+1000 demo-uni[3668:1289525] dynamic_cast error 2: One or more of the following type_info's has hidden visibility or is defined in more than one translation unit. They should all have public visibility. N6Assimp3FBX6ObjectE, N6Assimp3FBX5ModelE, N6Assimp3FBX5ModelE.
    2020-08-10 15:55:28.244694+1000 demo-uni[3668:1289525] dynamic_cast error 2: One or more of the following type_info's has hidden visibility or is defined in more than one translation unit. They should all have public visibility. N6Assimp3FBX6ObjectE, N6Assimp3FBX5ModelE, N6Assimp3FBX5ModelE.
    2020-08-10 15:55:28.245363+1000 demo-uni[3668:1289525] dynamic_cast error 1: Both of the following type_info's should have public visibility. At least one of them is hidden. N6Assimp3FBX8PropertyE, N6Assimp3FBX13TypedPropertyIiEE.
    2020-08-10 15:55:28.245401+1000 demo-uni[3668:1289525] dynamic_cast error 1: Both of the following type_info's should have public visibility. At least one of them is hidden. N6Assimp3FBX8PropertyE, N6Assimp3FBX13TypedPropertyIiEE.
    2020-08-10 15:55:28.245464+1000 demo-uni[3668:1289525] dynamic_cast error 1: Both of the following type_info's should have public visibility. At least one of them is hidden. N6Assimp3FBX8PropertyE, N6Assimp3FBX13TypedPropertyIiEE.
    2020-08-10 15:55:28.245523+1000 demo-uni[3668:1289525] dynamic_cast error 1: Both of the following type_info's should have public visibility. At least one of them is hidden. N6Assimp3FBX8PropertyE, N6Assimp3FBX13TypedPropertyIiEE.
    2020-08-10 15:55:28.245617+1000 demo-uni[3668:1289525] dynamic_cast error 1: Both of the following type_info's should have public visibility. At least one of them is hidden. N6Assimp3FBX8PropertyE, N6Assimp3FBX13TypedPropertyIiEE.
    2020-08-10 15:55:28.245825+1000 demo-uni[3668:1289525] dynamic_cast error 1: Both of the following type_info's should have public visibility. At least one of them is hidden. N6Assimp3FBX8PropertyE, N6Assimp3FBX13TypedPropertyIiEE.
    2020-08-10 15:55:28.246162+1000 demo-uni[3668:1289525] dynamic_cast error 1: Both of the following type_info's should have public visibility. At least one of them is hidden. N6Assimp3FBX8PropertyE, N6Assimp3FBX13TypedPropertyIiEE.
    2020-08-10 15:55:28.246873+1000 demo-uni[3668:1289525] dynamic_cast error 1: Both of the following type_info's should have public visibility. At least one of them is hidden. N6Assimp3FBX8PropertyE, N6Assimp3FBX13TypedPropertyIiEE.
    2020-08-10 15:55:28.248116+1000 demo-uni[3668:1289525] dynamic_cast error 2: One or more of the following type_info's has hidden visibility or is defined in more than one translation unit. They should all have public visibility. N6Assimp3FBX8PropertyE, N6Assimp3FBX13TypedPropertyIiEE, N6Assimp3FBX13TypedPropertyIbEE.
    2020-08-10 15:55:28.248212+1000 demo-uni[3668:1289525] dynamic_cast error 1: Both of the following type_info's should have public visibility. At least one of them is hidden. N6Assimp3FBX8PropertyE, N6Assimp3FBX13TypedPropertyIiEE.
    Make an SCNScene
    Creating node RootNode with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 1.0, a2: 0.0, a3: 0.0, a4: 0.0, b1: 0.0, b2: 1.0, b3: 0.0, b4: 0.0, c1: 0.0, c2: 0.0, c3: 1.0, c4: 0.0, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node RootNode position is: SCNVector3()
    Creating node Armature with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 1.0, a2: 0.0, a3: 0.0, a4: 0.0, b1: 0.0, b2: 1.0, b3: 0.0, b4: 0.0, c1: 0.0, c2: 0.0, c3: 1.0, c4: 0.0, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node Armature position is: SCNVector3()
    Creating node mixamorig:Hips with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 1.0, a2: 0.0, a3: 0.0, a4: -0.05676341, b1: 0.0, b2: 1.0, b3: 0.0, b4: 98.255325, c1: 0.0, c2: 0.0, c3: 1.0, c4: 0.65341663, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:Hips position is: SCNVector3()
    Creating node mixamorig:Spine with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 0.99999905, a2: 0.001180674, a3: 0.000113031885, a4: 0.012471489, b1: -0.0011860721, b2: 0.9954811, b3: 0.09494987, b4: 10.445221, c1: -4.1626885e-07, c2: -0.09494992, c3: 0.99548197, c4: -0.996275, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:Spine position is: SCNVector3()
    Creating node mixamorig:Spine1 with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 1.0, a2: 0.0, a3: 0.0, a4: 1.38994665e-08, b1: 0.0, b2: 0.9999999, b3: 0.0, b4: 12.241415, c1: 0.0, c2: 0.0, c3: 1.0, c4: 3.0601677e-07, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:Spine1 position is: SCNVector3()
    Creating node mixamorig:Spine2 with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 1.0, a2: 0.0, a3: 0.0, a4: -2.3253051e-08, b1: 0.0, b2: 1.0, b3: 0.0, b4: 13.990198, c1: 0.0, c2: 0.0, c3: 0.99999994, c4: 8.951937e-07, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:Spine2 position is: SCNVector3()
    Creating node mixamorig:Neck with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 0.9999995, a2: -0.0011939885, a3: 9.458743e-11, a4: -1.5756541e-08, b1: 0.0011885941, b2: 0.99548155, b3: -0.09494989, b4: 15.738949, c1: 0.000113369024, c2: 0.09494987, c3: 0.9954818, c4: 1.7221214e-07, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:Neck position is: SCNVector3()
    Creating node mixamorig:Head with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 1.0, a2: 0.0, a3: 0.0, a4: -7.594281e-11, b1: 0.0, b2: 1.0000001, b3: 0.0, b4: 7.0878143, c1: 0.0, c2: 0.0, c3: 1.0, c4: 0.8886855, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:Head position is: SCNVector3()
    Creating node mixamorig:HeadTop_End with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 1.0, a2: 0.0, a3: 0.0, a4: 2.3851499e-10, b1: 0.0, b2: 1.0, b3: 0.0, b4: 21.324432, c1: 0.0, c2: 0.0, c3: 1.0, c4: 2.6737056, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:HeadTop_End position is: SCNVector3()
    Creating node mixamorig:HeadTop_End_end with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 1.0, a2: 0.0, a3: 0.0, a4: 0.0, b1: 0.0, b2: 1.0, b3: 0.0, b4: 21.491394, c1: 0.0, c2: 0.0, c3: 1.0, c4: 0.0, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:HeadTop_End_end position is: SCNVector3()
    Creating node mixamorig:LeftShoulder with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: -0.02237853, a2: 0.96580726, a3: -0.25829428, a4: 6.218054, b1: -0.006378694, b2: -0.25849187, b3: -0.96599185, b4: 12.662543, c1: -0.99972916, c2: -0.019969918, c3: 0.0119452495, c4: -0.26091203, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:LeftShoulder position is: SCNVector3()
    Creating node mixamorig:LeftArm with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 0.99292433, a2: -0.022500962, a3: 0.11659544, a4: -8.940697e-08, b1: -0.008682878, b2: 0.96549773, b3: 0.2602685, b4: 13.884763, c1: -0.1184287, c2: -0.2594392, c3: 0.95847166, c4: 2.1904707e-05, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:LeftArm position is: SCNVector3()
    Creating node mixamorig:LeftForeArm with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 0.96166635, a2: 6.189588e-07, a3: 0.2742239, a4: 1.179511e-06, b1: -2.8164177e-07, b2: 1.0000001, b3: -1.2694495e-06, b4: 21.715612, c1: -0.2742241, c2: 1.1435538e-06, c3: 0.9616656, c4: -4.4800872e-06, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:LeftForeArm position is: SCNVector3()
    Creating node mixamorig:LeftHand with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 0.996433, a2: 0.083389595, a3: -0.012855671, a4: 1.2059332e-05, b1: -0.08347981, b2: 0.9964872, b3: -0.0066535827, b4: 26.413311, c1: 0.012255662, c2: 0.007703048, c3: 0.999895, c4: -3.0285853e-05, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:LeftHand position is: SCNVector3()
    Creating node mixamorig:LeftHandThumb1 with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 0.79987085, a2: 0.5754535, a3: -0.17047077, a4: -2.8091161, b1: 0.60000664, b2: -0.76003724, b3: 0.2496715, b4: 3.7278607, c1: 0.014110214, c2: -0.3019885, c3: -0.9532073, c4: 1.3310765, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:LeftHandThumb1 position is: SCNVector3()
    Creating node mixamorig:LeftHandThumb2 with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 0.9987312, a2: 0.049602795, a3: 0.008693145, a4: -0.20260704, b1: -0.04960069, b2: 0.9987695, b3: -0.00045510498, b4: -3.8777673, c1: -0.00870502, c2: 2.3341583e-05, c3: 0.99996185, c4: -9.283423e-06, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:LeftHandThumb2 position is: SCNVector3()
    Creating node mixamorig:LeftHandThumb3 with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 0.9975761, a2: 0.06958419, a3: 0.00059370877, a4: -0.010765195, b1: -0.06958422, b2: 0.997576, b3: -2.427754e-06, b4: -4.193759, c1: -0.0005924388, c2: -3.889089e-05, c3: 0.9999997, c4: 6.4969063e-06, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:LeftHandThumb3 position is: SCNVector3()
    Creating node mixamorig:LeftHandThumb4 with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 0.99999994, a2: 0.0, a3: 0.0, a4: 0.21334791, b1: 0.0, b2: 0.9999998, b3: 0.0, b4: -3.1771622, c1: 0.0, c2: 0.0, c3: 0.9999999, c4: -1.3947487e-05, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:LeftHandThumb4 position is: SCNVector3()
    Creating node mixamorig:LeftHandThumb4_end with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 1.0, a2: 0.0, a3: 0.0, a4: 0.0, b1: 0.0, b2: 1.0, b3: 0.0, b4: 3.1843288, c1: 0.0, c2: 0.0, c3: 1.0, c4: 0.0, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:LeftHandThumb4_end position is: SCNVector3()
    Creating node mixamorig:LeftHandIndex1 with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 0.99945354, a2: 0.032647464, a3: -0.005486314, a4: -3.9728847, b1: 0.032608062, b2: -0.9994422, b3: -0.007136986, b4: 13.386845, c1: -0.0057162694, c2: 0.006954171, c3: -0.9999597, c4: -0.13160533, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:LeftHandIndex1 position is: SCNVector3()
    Creating node mixamorig:LeftHandIndex2 with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 0.9991777, a2: 0.040114306, a3: 0.005912489, a4: -0.12627149, b1: -0.040113226, b2: 0.9991952, b3: -0.00030116018, b4: -2.4779737, c1: -0.0059198104, c2: 6.3743566e-05, c3: 0.9999826, c4: 9.768453e-06, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:LeftHandIndex2 position is: SCNVector3()
    Creating node mixamorig:LeftHandIndex3 with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 0.9978454, a2: 0.06560028, a3: 0.0006955773, a4: -0.021886706, b1: -0.06560023, b2: 0.9978466, b3: -8.635647e-06, b4: -2.0279047, c1: -0.0006946454, c2: -3.7013033e-05, c3: 0.9999996, c4: 2.1860033e-06, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:LeftHandIndex3 position is: SCNVector3()
    Creating node mixamorig:LeftHandIndex4 with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 1.0, a2: 0.0, a3: 0.0, a4: 0.14815676, b1: 0.0, b2: 1.0, b3: 0.0, b4: -2.6993263, c1: 0.0, c2: 0.0, c3: 1.0, c4: -6.576738e-07, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:LeftHandIndex4 position is: SCNVector3()
    Creating node mixamorig:LeftHandIndex4_end with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 1.0, a2: 0.0, a3: 0.0, a4: 0.0, b1: 0.0, b2: 1.0, b3: 0.0, b4: 2.7033772, c1: 0.0, c2: 0.0, c3: 1.0, c4: 0.0, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:LeftHandIndex4_end position is: SCNVector3()
    Creating node mixamorig:LeftHandMiddle1 with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 0.9971607, a2: 0.074955575, a3: 0.0072571915, a4: -1.1493235, b1: 0.0750001, b2: -0.997165, b3: -0.0060690846, b4: 13.719024, c1: 0.0067816027, c2: 0.00659604, c3: -0.9999706, c4: -0.09166986, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:LeftHandMiddle1 position is: SCNVector3()
    Creating node mixamorig:LeftHandMiddle2 with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 0.9999858, a2: -0.004786521, a3: 0.002391056, a4: -0.023430526, b1: 0.0047865757, b2: 0.99998856, b3: -1.6872256e-05, b4: -2.7363927, c1: -0.0023909484, c2: 2.8316987e-05, c3: 0.9999971, c4: 1.6348167e-06, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:LeftHandMiddle2 position is: SCNVector3()
    Creating node mixamorig:LeftHandMiddle3 with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 0.9994995, a2: 0.03162944, a3: 0.00028729052, a4: -0.030904174, b1: -0.031629413, b2: 0.9995003, b3: -4.643484e-06, b4: -2.3167245, c1: -0.00028729351, c2: -4.4456724e-06, c3: 1.0000002, c4: -6.180402e-06, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:LeftHandMiddle3 position is: SCNVector3()
    Creating node mixamorig:LeftHandMiddle4 with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 1.0, a2: 0.0, a3: 0.0, a4: 0.05434227, b1: 0.0, b2: 0.99999994, b3: 0.0, b4: -2.9673038, c1: 0.0, c2: 0.0, c3: 0.99999994, c4: 1.378615e-05, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:LeftHandMiddle4 position is: SCNVector3()
    Creating node mixamorig:LeftHandMiddle4_end with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 1.0, a2: 0.0, a3: 0.0, a4: 0.0, b1: 0.0, b2: 1.0, b3: 0.0, b4: 2.9677951, c1: 0.0, c2: 0.0, c3: 1.0, c4: 0.0, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:LeftHandMiddle4_end position is: SCNVector3()
    Creating node mixamorig:LeftHandRing1 with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 0.99049634, a2: 0.13388945, a3: 0.03149125, a4: 1.7641125, b1: 0.13408084, b2: -0.990962, b3: -0.0040340214, b4: 13.235846, c1: 0.03066656, c2: 0.008218056, c3: -0.9994954, c4: 0.54892105, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:LeftHandRing1 position is: SCNVector3()
    Creating node mixamorig:LeftHandRing2 with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 0.9977095, a2: -0.06755327, a3: -0.003450696, a4: 0.13226986, b1: 0.06755303, b2: 0.997716, b3: -0.00017532856, b4: -2.6051326, c1: 0.0034546596, c2: -5.8178048e-05, c3: 0.99999315, c4: -1.2151344e-05, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:LeftHandRing2 position is: SCNVector3()
    Creating node mixamorig:LeftHandRing3 with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 0.9998436, a2: -0.017150264, a3: -0.0043431795, a4: -0.036605358, b1: 0.017150747, b2: 0.99985313, b3: 7.426572e-05, b4: -2.1703362, c1: 0.004341264, c2: -0.00014874278, c3: 0.9999914, c4: 1.864633e-05, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:LeftHandRing3 position is: SCNVector3()
    Creating node mixamorig:LeftHandRing4 with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 1.0, a2: 0.0, a3: 0.0, a4: -0.095641136, b1: 0.0, b2: 1.0, b3: 0.0, b4: -2.809536, c1: 0.0, c2: 0.0, c3: 1.0, c4: 1.6119695e-05, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:LeftHandRing4 position is: SCNVector3()
    Creating node mixamorig:LeftHandRing4_end with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 1.0, a2: 0.0, a3: 0.0, a4: 0.0, b1: 0.0, b2: 1.0, b3: 0.0, b4: 2.8111646, c1: 0.0, c2: 0.0, c3: 1.0, c4: 0.0, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:LeftHandRing4_end position is: SCNVector3()
    Creating node mixamorig:LeftHandPinky1 with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 0.98181117, a2: 0.14927787, a3: 0.11732408, a4: 4.13332, b1: 0.14994164, b2: -0.9886898, b3: 0.003199596, b4: 12.87177, c1: 0.11647478, c2: 0.014450344, c3: -0.99308914, c4: 2.2160537, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:LeftHandPinky1 position is: SCNVector3()
    Creating node mixamorig:LeftHandPinky2 with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 0.9943223, a2: -0.106393225, a3: -0.0016498831, a4: 0.12179518, b1: 0.10639313, b2: 0.99432415, b3: -0.00011092411, b4: -1.8226079, c1: 0.0016523198, c2: -6.524196e-05, c3: 0.99999833, c4: -9.197072e-06, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:LeftHandPinky2 position is: SCNVector3()
    Creating node mixamorig:LeftHandPinky3 with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 0.99996376, a2: 0.0068212464, a3: 0.0051141228, a4: -0.05990243, b1: -0.0068202903, b2: 0.99997675, b3: -0.00020449085, b4: -1.5017302, c1: -0.0051154, c2: 0.00016960366, c3: 0.9999866, c4: -9.43456e-06, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:LeftHandPinky3 position is: SCNVector3()
    Creating node mixamorig:LeftHandPinky4 with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 0.99999994, a2: 0.0, a3: 0.0, a4: -0.061891317, b1: 0.0, b2: 0.99999994, b3: 0.0, b4: -1.8725207, c1: 0.0, c2: 0.0, c3: 0.99999994, c4: 1.4186953e-05, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:LeftHandPinky4 position is: SCNVector3()
    Creating node mixamorig:LeftHandPinky4_end with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 1.0, a2: 0.0, a3: 0.0, a4: 0.0, b1: 0.0, b2: 1.0, b3: 0.0, b4: 1.8735473, c1: 0.0, c2: 0.0, c3: 1.0, c4: 0.0, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:LeftHandPinky4_end position is: SCNVector3()
    Creating node mixamorig:RightShoulder with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: -0.032777578, a2: -0.96522003, a3: 0.2593769, a4: -6.2143745, b1: 0.008455266, b2: -0.25977486, b3: -0.96563256, b4: 12.653912, c1: 0.99942714, c2: -0.029457984, c3: 0.01667598, c4: -0.32676837, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:RightShoulder position is: SCNVector3()
    Creating node mixamorig:RightArm with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 0.9962646, a2: 0.03265323, a3: -0.07994098, a4: -7.748604e-07, b1: -0.01077842, b2: 0.9655316, b3: 0.2600615, b4: 13.891395, c1: 0.085677445, c2: -0.25822845, c3: 0.9622768, c4: -2.3543835e-06, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:RightArm position is: SCNVector3()
    Creating node mixamorig:RightForeArm with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 0.9478643, a2: -9.3263324e-08, a3: -0.31867322, a4: -1.3505069e-06, b1: -2.431147e-08, b2: 0.9999996, b3: -3.6497366e-07, b4: 21.716059, c1: 0.31867313, c2: 3.5369294e-07, c3: 0.9478646, c4: 6.178394e-06, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:RightForeArm position is: SCNVector3()
    Creating node mixamorig:RightHand with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 0.99497455, a2: -0.10009315, a3: -0.002540526, a4: -2.7565184e-06, b1: 0.100099884, b2: 0.99497426, b3: 0.0027172675, b4: 26.37904, c1: 0.0022557767, c2: -0.0029579215, c3: 0.9999929, c4: 1.00354955e-05, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:RightHand position is: SCNVector3()
    Creating node mixamorig:RightHandThumb1 with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 0.78485173, a2: -0.592917, a3: 0.1801545, a4: 3.1704636, b1: -0.6196669, b2: -0.74889076, b3: 0.23489192, b4: 3.8157814, c1: -0.004355379, c2: -0.29599127, c3: -0.9551804, c4: 1.1497728, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:RightHandThumb1 position is: SCNVector3()
    Creating node mixamorig:RightHandThumb2 with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 0.99879056, a2: -0.048283745, a3: -0.009296369, a4: 0.2232164, b1: 0.04828107, b2: 0.9988341, b3: -0.0005108082, b4: -4.067917, c1: 0.00931019, c2: 6.135177e-05, c3: 0.9999568, c4: 9.596348e-06, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:RightHandThumb2 position is: SCNVector3()
    Creating node mixamorig:RightHandThumb3 with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 0.99579173, a2: -0.09160059, a3: -0.0028443877, a4: 0.02614975, b1: 0.09160092, b2: 0.99579567, b3: -1.7778071e-05, b4: -4.0238333, c1: 0.0028340577, c2: -0.00024284523, c3: 0.9999958, c4: -9.23872e-06, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:RightHandThumb3 position is: SCNVector3()
    Creating node mixamorig:RightHandThumb4 with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 0.99999994, a2: 0.0, a3: 0.0, a4: -0.24937534, b1: 0.0, b2: 1.0, b3: 0.0, b4: -2.9194899, c1: 0.0, c2: 0.0, c3: 0.9999999, c4: 5.364418e-06, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:RightHandThumb4 position is: SCNVector3()
    Creating node mixamorig:RightHandThumb4_end with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 1.0, a2: 0.0, a3: 0.0, a4: 0.0, b1: 0.0, b2: 1.0, b3: 0.0, b4: 2.9301155, c1: 0.0, c2: 0.0, c3: 1.0, c4: 0.0, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:RightHandThumb4_end position is: SCNVector3()
    Creating node mixamorig:RightHandIndex1 with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 0.9997214, a2: -0.02259251, a3: 0.0066141854, a4: 4.2313375, b1: -0.02260658, b2: -0.99974257, b3: 0.0020660553, b4: 13.3323765, c1: 0.006565803, c2: -0.0022150106, c3: -0.99997467, c4: -0.33492133, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:RightHandIndex1 position is: SCNVector3()
    Creating node mixamorig:RightHandIndex2 with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 0.99731463, a2: -0.072718106, a3: -0.008644692, a4: 0.19383323, b1: 0.07271496, b2: 0.99735266, b3: -0.0006735776, b4: -2.4899895, c1: 0.008670773, c2: 4.3170392e-05, c3: 0.99996346, c4: -1.8032442e-06, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:RightHandIndex2 position is: SCNVector3()
    Creating node mixamorig:RightHandIndex3 with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 0.9967106, a2: -0.08104003, a3: 0.0006302017, a4: 0.010123104, b1: 0.08104006, b2: 0.99671054, b3: 2.7400633e-06, b4: -2.064481, c1: -0.00062835094, c2: 4.8340535e-05, c3: 0.99999964, c4: 2.525354e-05, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:RightHandIndex3 position is: SCNVector3()
    Creating node mixamorig:RightHandIndex4 with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 1.0, a2: 0.0, a3: 0.0, a4: -0.20395756, b1: 0.0, b2: 0.99999994, b3: 0.0, b4: -2.6706846, c1: 0.0, c2: 0.0, c3: 0.99999994, c4: -1.2058037e-05, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:RightHandIndex4 position is: SCNVector3()
    Creating node mixamorig:RightHandIndex4_end with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 1.0, a2: 0.0, a3: 0.0, a4: 0.0, b1: 0.0, b2: 1.0, b3: 0.0, b4: 2.6784697, c1: 0.0, c2: 0.0, c3: 1.0, c4: 0.0, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:RightHandIndex4_end position is: SCNVector3()
    Creating node mixamorig:RightHandMiddle1 with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 0.99682087, a2: -0.079580545, a3: -0.0039850664, a4: 1.4031386, b1: -0.07956836, b2: -0.9968247, b3: 0.0031338406, b4: 13.946581, c1: -0.0042217984, c2: -0.0028067864, c3: -0.99998915, c4: 0.038103327, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:RightHandMiddle1 position is: SCNVector3()
    Creating node mixamorig:RightHandMiddle2 with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 0.99986863, a2: -0.015918521, a3: -0.0030936936, a4: 0.055424213, b1: 0.015918404, b2: 0.9998733, b3: -6.29391e-05, b4: -2.6883934, c1: 0.003094307, c2: 1.3684174e-05, c3: 0.99999434, c4: 1.974983e-05, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:RightHandMiddle2 position is: SCNVector3()
    Creating node mixamorig:RightHandMiddle3 with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 0.99963266, a2: -0.02708387, a3: -0.0007628385, a4: 0.010795355, b1: 0.027083868, b2: 0.9996332, b3: -4.79657e-06, b4: -2.3054323, c1: 0.00076268805, c2: -1.5865804e-05, c3: 1.0000001, c4: 3.6942103e-05, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:RightHandMiddle3 position is: SCNVector3()
    Creating node mixamorig:RightHandMiddle4 with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 1.0, a2: 0.0, a3: 0.0, a4: -0.06621766, b1: 0.0, b2: 1.0, b3: 0.0, b4: -2.9545326, c1: 0.0, c2: 0.0, c3: 0.99999994, c4: -5.8407895e-06, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:RightHandMiddle4 position is: SCNVector3()
    Creating node mixamorig:RightHandMiddle4_end with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 1.0, a2: 0.0, a3: 0.0, a4: 0.0, b1: 0.0, b2: 1.0, b3: 0.0, b4: 2.955281, c1: 0.0, c2: 0.0, c3: 1.0, c4: 0.0, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:RightHandMiddle4_end position is: SCNVector3()
    Creating node mixamorig:RightHandRing1 with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 0.9878348, a2: -0.15406115, a3: -0.02115659, a4: -1.3726916, b1: -0.1539921, b2: -0.9880607, b3: 0.0048611094, b4: 13.538776, c1: -0.021652896, c2: -0.0015440264, c3: -0.99976414, c4: 0.9085393, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:RightHandRing1 position is: SCNVector3()
    Creating node mixamorig:RightHandRing2 with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 0.9932655, a2: 0.11585798, a3: -0.00052631024, a4: -0.13469505, b1: -0.11585804, b2: 0.9932651, b3: 2.9859111e-05, b4: -2.4726834, c1: 0.0005262255, c2: 3.131924e-05, c3: 0.9999993, c4: -1.3506826e-05, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:RightHandRing2 position is: SCNVector3()
    Creating node mixamorig:RightHandRing3 with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 0.99810225, a2: -0.06132086, a3: 0.0055700643, a4: 0.1337905, b1: 0.06131986, b2: 0.99811834, b3: 0.00034435658, b4: -2.1659026, c1: -0.0055806967, c2: -2.1475084e-06, c3: 0.99998444, c4: -6.0039456e-06, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:RightHandRing3 position is: SCNVector3()
    Creating node mixamorig:RightHandRing4 with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 1.0, a2: 0.0, a3: 0.0, a4: 0.0009013489, b1: 0.0, b2: 1.0, b3: 0.0, b4: -2.660405, c1: 0.0, c2: 0.0, c3: 1.0, c4: 2.8822105e-06, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:RightHandRing4 position is: SCNVector3()
    Creating node mixamorig:RightHandRing4_end with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 1.0, a2: 0.0, a3: 0.0, a4: 0.0, b1: 0.0, b2: 1.0, b3: 0.0, b4: 2.6604085, c1: 0.0, c2: 0.0, c3: 1.0, c4: 0.0, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:RightHandRing4_end position is: SCNVector3()
    Creating node mixamorig:RightHandPinky1 with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 0.9792566, a2: -0.17652892, a3: -0.09946592, a4: -3.1343532, b1: -0.17614232, b2: -0.9842827, b3: 0.012724311, b4: 11.769386, c1: -0.10014869, c2: 0.0050597936, c3: -0.99496007, c4: 1.9060074, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:RightHandPinky1 position is: SCNVector3()
    Creating node mixamorig:RightHandPinky2 with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 0.9831697, a2: 0.18264659, a3: -0.0041451124, a4: -0.1743331, b1: -0.18264693, b2: 0.98317796, b3: 0.0003198645, b4: -2.2420824, c1: 0.004133809, c2: 0.0004426109, c3: 0.99999076, c4: -9.9082245e-06, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:RightHandPinky2 position is: SCNVector3()
    Creating node mixamorig:RightHandPinky3 with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 0.99297154, a2: -0.11830571, a3: 0.0033212898, a4: 0.20481968, b1: 0.118305214, b2: 0.99297684, b3: 0.00035566845, b4: -1.9230525, c1: -0.0033400427, c2: 3.9757277e-05, c3: 0.9999943, c4: 8.705945e-06, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:RightHandPinky3 position is: SCNVector3()
    Creating node mixamorig:RightHandPinky4 with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 0.99999994, a2: 0.0, a3: 0.0, a4: -0.030481696, b1: 0.0, b2: 0.99999994, b3: 0.0, b4: -2.4423075, c1: 0.0, c2: 0.0, c3: 0.99999994, c4: -2.2445893e-05, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:RightHandPinky4 position is: SCNVector3()
    Creating node mixamorig:RightHandPinky4_end with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 1.0, a2: 0.0, a3: 0.0, a4: 0.0, b1: 0.0, b2: 1.0, b3: 0.0, b4: 2.4425006, c1: 0.0, c2: 0.0, c3: 1.0, c4: 0.0, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:RightHandPinky4_end position is: SCNVector3()
    Creating node mixamorig:LeftUpLeg with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: -0.9998969, a2: 0.013694213, a3: 0.0040844493, a4: 10.128629, b1: -0.013496454, b2: -0.9988943, b3: 0.04504206, b4: -5.802905, c1: 0.004696745, c2: 0.044982374, c3: 0.9989762, c4: -0.5827036, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:LeftUpLeg position is: SCNVector3()
    Creating node mixamorig:LeftLeg with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 0.9996037, a2: 0.027928252, a3: -0.0036632833, a4: 8.260831e-07, b1: -0.026940541, b2: 0.98590773, b3: 0.16510718, b4: 41.134518, c1: 0.008222813, c2: -0.16494292, c3: 0.98626935, c4: 4.7311187e-07, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:LeftLeg position is: SCNVector3()
    Creating node mixamorig:LeftFoot with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 0.9919146, a2: -0.122593984, a3: 0.032797195, a4: 1.3839453e-06, b1: 0.09234006, b2: 0.5199465, b3: -0.84919286, b4: 37.253517, c1: 0.08705317, c2: 0.8453555, c3: 0.52706295, c4: 5.5879354e-07, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:LeftFoot position is: SCNVector3()
    Creating node mixamorig:LeftToeBase with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 0.98678595, a2: -0.10396436, a3: -0.124280445, a4: 9.834766e-07, b1: -6.299515e-07, b2: 0.76701224, b3: -0.6416328, b4: 19.919283, c1: 0.16203159, c2: 0.63315463, c3: 0.7568758, c4: 7.4505806e-07, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:LeftToeBase position is: SCNVector3()
    Creating node mixamorig:LeftToe_End with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 1.0, a2: 0.0, a3: 0.0, a4: -2.2351742e-08, b1: 0.0, b2: 1.0, b3: 0.0, b4: 7.718031, c1: 0.0, c2: 0.0, c3: 1.0, c4: 1.7881393e-07, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:LeftToe_End position is: SCNVector3()
    Creating node mixamorig:LeftToe_End_end with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 1.0, a2: 0.0, a3: 0.0, a4: 0.0, b1: 0.0, b2: 1.0, b3: 0.0, b4: 7.7180314, c1: 0.0, c2: 0.0, c3: 1.0, c4: 0.0, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:LeftToe_End_end position is: SCNVector3()
    Creating node mixamorig:RightUpLeg with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: -0.9998958, a2: -0.013681309, a3: -0.0042653535, a4: -10.015044, b1: 0.0134532815, b2: -0.99868125, b3: 0.04954859, b4: -5.8028994, c1: -0.0049376115, c2: 0.04948614, c3: 0.9987622, c4: -0.7206612, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:RightUpLeg position is: SCNVector3()
    Creating node mixamorig:RightLeg with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 0.99960494, a2: -0.027863145, a3: 0.0038109142, a4: 4.461035e-07, b1: 0.026803436, b2: 0.98494464, b3: 0.1707801, b4: 41.135094, c1: -0.00851201, c2: -0.17061035, c3: 0.98530227, c4: 8.195639e-08, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:RightLeg position is: SCNVector3()
    Creating node mixamorig:RightFoot with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 0.99190784, a2: 0.122666225, a3: -0.03273101, a4: -3.5390258e-08, b1: -0.09243344, b2: 0.52102804, b3: -0.8485198, b4: 37.26747, c1: -0.08703095, c2: 0.8446786, c3: 0.5281507, c4: 1.0430813e-07, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:RightFoot position is: SCNVector3()
    Creating node mixamorig:RightToeBase with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 0.98649526, a2: 0.105438195, a3: 0.12533915, a4: 9.3877316e-07, b1: 1.9027635e-08, b2: 0.76524365, b3: -0.6437401, b4: 19.857279, c1: -0.16378993, c2: 0.63504696, c3: 0.7549088, c4: -9.983778e-07, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:RightToeBase position is: SCNVector3()
    Creating node mixamorig:RightToe_End with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 1.0, a2: 0.0, a3: 0.0, a4: -7.1525574e-07, b1: 0.0, b2: 1.0, b3: 0.0, b4: 7.6497264, c1: 0.0, c2: 0.0, c3: 1.0, c4: 1.4901161e-07, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:RightToe_End position is: SCNVector3()
    Creating node mixamorig:RightToe_End_end with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: 1.0, a2: 0.0, a3: 0.0, a4: 0.0, b1: 0.0, b2: 1.0, b3: 0.0, b4: 7.6497254, c1: 0.0, c2: 0.0, c3: 1.0, c4: 0.0, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node mixamorig:RightToe_End_end position is: SCNVector3()
    Creating node ely_vanguardsoldier_kerwinatienza_Mesh with 1 meshes
    vertexCount : 30748
    Getting vertices
    Getting normals
    Getting texture coordinates
    Material name is ely_vanguardsoldier_kerwinatienza_M
    Loading texture type : Diffuse
    has textures: 1
    has embedded textures: 0
    tex file name is ely_diffuse.png
    tex path is /private/var/containers/Bundle/Application/08A56B20-E8C4-4BD8-A40A-B623FAFE4BDA/demo-uni.app/ely_diffuse.png
    Generating external texture
    Loading texture type : Specular
    has textures: 1
    has embedded textures: 0
    tex file name is ely_specular.png
    tex path is /private/var/containers/Bundle/Application/08A56B20-E8C4-4BD8-A40A-B623FAFE4BDA/demo-uni.app/ely_specular.png
    Generating external texture
    Loading texture type : Ambient
    has textures: 0
    has embedded textures: 0
    Extracting color
    Loading texture type : Emissive
    has textures: 0
    has embedded textures: 0
    Extracting color
    Loading texture type : Reflection
    has textures: 0
    has embedded textures: 0
    Extracting color
    Loading texture type : Opacity
    has textures: 0
    has embedded textures: 0
    Extracting color
    Loading texture type : Normals
    has textures: 0
    has embedded textures: 0
    Extracting color
    Loading texture type : Height
    has textures: 0
    has embedded textures: 0
    Extracting color
    Loading texture type : Displacement
    has textures: 0
    has embedded textures: 0
    Extracting color
    Loading texture type : Shininess
    has textures: 0
    has embedded textures: 0
    Extracting color
    Loading multiply color
    Loading blend mode
    Using alpha blend mode
    Loading cull/double sided mode
    Loading shininess
    shininess: 0
    Loading lighting model
    aiNodeTransform: aiMatrix4x4(a1: 0.9999999, a2: 0.0, a3: 0.0, a4: -1.9073486e-06, b1: 0.0, b2: 1.0, b3: 0.0, b4: -1.9767913, c1: 0.0, c2: 0.0, c3: 1.0, c4: -1.0969205e-06, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node ely_vanguardsoldier_kerwinatienza_Mesh position is: SCNVector3()
    Creating node Lamp with 0 meshes
    vertexCount : 0
    Creating light for node Lamp
    ambient 0.0, 0.0, 0.0 
    diffuse 0.0, 0.0, 0.0 
    specular 0.0, 0.0, 0.0 
    inner angle 6.2831855
    outer angle 6.2831855
    att const 0.0
    att linear 0.0
    att quad 2.2222247e-07
    position 0.0, 0.0, 0.0 
    Setting color: 1.0 1.0 1.0 
    aiNodeTransform: aiMatrix4x4(a1: -29.086468, a2: 56.639313, a3: 77.1101, a4: 116.68258, b1: -5.5189037, b2: 79.46724, b3: -60.45247, b4: 325.3772, c1: -95.51712, c2: -21.839115, c3: -19.988338, c4: 424.66467, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node Lamp position is: SCNVector3()
    Creating node Camera with 0 meshes
    vertexCount : 0
    aiNodeTransform: aiMatrix4x4(a1: -65.15583, a2: -32.401337, a3: 68.59206, a4: 748.11316, b1: -44.527134, b2: 89.53957, b3: -1.1920928e-05, b4: 534.3665, c1: -61.41703, c2: -30.542088, c3: -72.76763, c4: 650.764, d1: 0.0, d2: 0.0, d3: 0.0, d4: 1.0)
    Node Camera position is: SCNVector3()
    bone names 50: ["mixamorig:Hips", "mixamorig:Spine", "mixamorig:Spine1", "mixamorig:Spine2", "mixamorig:Neck", "mixamorig:Head", "mixamorig:LeftShoulder", "mixamorig:LeftArm", "mixamorig:LeftForeArm", "mixamorig:LeftHand", "mixamorig:LeftHandThumb1", "mixamorig:LeftHandThumb2", "mixamorig:LeftHandIndex1", "mixamorig:LeftHandIndex2", "mixamorig:LeftHandIndex3", "mixamorig:LeftHandMiddle1", "mixamorig:LeftHandMiddle2", "mixamorig:LeftHandMiddle3", "mixamorig:LeftHandRing1", "mixamorig:LeftHandRing2", "mixamorig:LeftHandRing3", "mixamorig:LeftHandPinky1", "mixamorig:LeftHandPinky2", "mixamorig:RightShoulder", "mixamorig:RightArm", "mixamorig:RightForeArm", "mixamorig:RightHand", "mixamorig:RightHandThumb1", "mixamorig:RightHandThumb2", "mixamorig:RightHandThumb3", "mixamorig:RightHandIndex1", "mixamorig:RightHandIndex2", "mixamorig:RightHandIndex3", "mixamorig:RightHandMiddle1", "mixamorig:RightHandMiddle2", "mixamorig:RightHandMiddle3", "mixamorig:RightHandRing1", "mixamorig:RightHandRing2", "mixamorig:RightHandRing3", "mixamorig:RightHandPinky1", "mixamorig:RightHandPinky2", "mixamorig:RightHandPinky3", "mixamorig:LeftUpLeg", "mixamorig:LeftLeg", "mixamorig:LeftFoot", "mixamorig:LeftToeBase", "mixamorig:RightUpLeg", "mixamorig:RightLeg", "mixamorig:RightFoot", "mixamorig:RightToeBase"]
    unique bone names 50: ["mixamorig:Hips", "mixamorig:Spine", "mixamorig:Spine1", "mixamorig:Spine2", "mixamorig:Neck", "mixamorig:Head", "mixamorig:LeftShoulder", "mixamorig:LeftArm", "mixamorig:LeftForeArm", "mixamorig:LeftHand", "mixamorig:LeftHandThumb1", "mixamorig:LeftHandThumb2", "mixamorig:LeftHandIndex1", "mixamorig:LeftHandIndex2", "mixamorig:LeftHandIndex3", "mixamorig:LeftHandMiddle1", "mixamorig:LeftHandMiddle2", "mixamorig:LeftHandMiddle3", "mixamorig:LeftHandRing1", "mixamorig:LeftHandRing2", "mixamorig:LeftHandRing3", "mixamorig:LeftHandPinky1", "mixamorig:LeftHandPinky2", "mixamorig:RightShoulder", "mixamorig:RightArm", "mixamorig:RightForeArm", "mixamorig:RightHand", "mixamorig:RightHandThumb1", "mixamorig:RightHandThumb2", "mixamorig:RightHandThumb3", "mixamorig:RightHandIndex1", "mixamorig:RightHandIndex2", "mixamorig:RightHandIndex3", "mixamorig:RightHandMiddle1", "mixamorig:RightHandMiddle2", "mixamorig:RightHandMiddle3", "mixamorig:RightHandRing1", "mixamorig:RightHandRing2", "mixamorig:RightHandRing3", "mixamorig:RightHandPinky1", "mixamorig:RightHandPinky2", "mixamorig:RightHandPinky3", "mixamorig:LeftUpLeg", "mixamorig:LeftLeg", "mixamorig:LeftFoot", "mixamorig:LeftToeBase", "mixamorig:RightUpLeg", "mixamorig:RightLeg", "mixamorig:RightFoot", "mixamorig:RightToeBase"]
    unique bone nodes 50: [<SCNNode: 0x28143e800 'mixamorig:Hips' pos(-0.056763 98.255325 0.653417) | 3 children>, <SCNNode: 0x28143d000 'mixamorig:Spine' pos(0.012471 10.445221 -0.996275) rot(-0.999899 0.000597 -0.012462 0.095102) scale(1.000000 1.000000 1.000000) | 1 child>, <SCNNode: 0x28143d500 'mixamorig:Spine1' pos(0.000000 12.241415 0.000000) scale(1.000000 1.000000 1.000000) | 1 child>, <SCNNode: 0x28143fd00 'mixamorig:Spine2' pos(-0.000000 13.990198 0.000001) scale(1.000000 1.000000 1.000000) | 3 children>, <SCNNode: 0x28143c800 'mixamorig:Neck' pos(-0.000000 15.738949 0.000000) rot(0.999925 -0.000597 0.012546 0.095100) scale(1.000000 1.000000 1.000000) | 1 child>, <SCNNode: 0x28143e900 'mixamorig:Head' pos(-0.000000 7.087814 0.888686) scale(1.000000 1.000000 1.000000) | 1 child>, <SCNNode: 0x28143eb00 'mixamorig:LeftShoulder' pos(6.218054 12.662543 -0.260912) rot(-0.611953 -0.479611 0.628877 4.025076) scale(1.000000 1.000000 0.999999) | 1 child>, <SCNNode: 0x28143f100 'mixamorig:LeftArm' pos(-0.000000 13.884763 0.000022) rot(-0.910892 0.411927 0.024219 0.289292) scale(1.000000 1.000000 1.000001) | 1 child>, <SCNNode: 0x28143e500 'mixamorig:LeftForeArm' pos(0.000001 21.715612 -0.000004) rot(0.000004 1.000000 -0.000002 0.277783) scale(1.000000 1.000000 1.000000) | 1 child>, <SCNNode: 0x28143ea00 'mixamorig:LeftHand' pos(0.000012 26.413311 -0.000030) rot(0.084770 -0.148273 -0.985298 0.084782) scale(0.999999 1.000000 1.000000) | 5 children>, <SCNNode: 0x28143d800 'mixamorig:LeftHandThumb1' pos(-2.809116 3.727861 1.331077) rot(0.947481 0.317019 -0.042170 3.436989) scale(1.000000 1.000000 1.000000) | 1 child>, <SCNNode: 0x28143fe00 'mixamorig:LeftHandThumb2' pos(-0.202607 -3.877767 -0.000009) rot(0.004750 0.172738 -0.984945 0.050382) scale(1.000000 1.000000 1.000000) | 1 child>, <SCNNode: 0x28143dc00 'mixamorig:LeftHandIndex1' pos(-3.972885 13.386845 -0.131605) rot(0.999863 0.016316 -0.002801 3.134546) scale(1.000002 0.999999 1.000000) | 1 child>, <SCNNode: 0x28143d400 'mixamorig:LeftHandIndex2' pos(-0.126271 -2.477974 0.000010) rot(0.004500 0.145925 -0.989424 0.040555) scale(1.000000 1.000000 1.000000) | 1 child>, <SCNNode: 0x28143df00 'mixamorig:LeftHandIndex3' pos(-0.021887 -2.027905 0.000002) rot(-0.000216 0.010595 -0.999895 0.065655) scale(1.000000 1.000001 1.000000) | 1 child>, <SCNNode: 0x281425b00 'mixamorig:LeftHandMiddle1' pos(-1.149323 13.719024 -0.091670) rot(0.999290 0.037516 0.003512 3.135256) scale(1.000000 1.000000 1.000015) | 1 child>, <SCNNode: 0x281427d00 'mixamorig:LeftHandMiddle2' pos(-0.023431 -2.736393 0.000002) rot(0.004224 0.447014 0.894877 0.005349) scale(1.000000 1.000000 1.000000) | 1 child>, <SCNNode: 0x281426300 'mixamorig:LeftHandMiddle3' pos(-0.030904 -2.316725 -0.000006) rot(0.000003 0.009084 -1.000133 0.031629) scale(1.000000 1.000001 1.000000) | 1 child>, <SCNNode: 0x281424500 'mixamorig:LeftHandRing1' pos(1.764112 13.235846 0.548921) rot(0.997621 0.067153 0.015577 3.135452) scale(1.000000 1.000000 0.999999) | 1 child>, <SCNNode: 0x281427100 'mixamorig:LeftHandRing2' pos(0.132270 -2.605133 -0.000012) rot(0.000866 -0.051044 0.998707 0.067693) scale(1.000000 1.000000 0.999999) | 1 child>, <SCNNode: 0x281425600 'mixamorig:LeftHandRing3' pos(-0.036605 -2.170336 0.000019) rot(-0.006305 -0.245523 0.969743 0.017686) scale(1.000000 1.000000 1.000001) | 1 child>, <SCNNode: 0x281424200 'mixamorig:LeftHandPinky1' pos(4.133320 12.871770 2.216054) rot(0.995442 0.075148 0.058718 3.135942) scale(1.000001 1.000000 1.000001) | 1 child>, <SCNNode: 0x281424d00 'mixamorig:LeftHandPinky2' pos(0.121795 -1.822608 -0.000009) rot(0.000215 -0.015517 0.999860 0.106610) scale(1.000000 1.000000 1.000000) | 1 child>, <SCNNode: 0x281426500 'mixamorig:RightShoulder' pos(-6.214375 12.653912 -0.326768) rot(0.607836 -0.480497 0.632185 2.262614) scale(1.000000 1.000000 1.000000) | 1 child>, <SCNNode: 0x281419900 'mixamorig:RightArm' pos(-0.000001 13.891395 -0.000002) rot(-0.949529 -0.303420 -0.079569 0.276427) scale(1.000000 1.000000 1.000000) | 1 child>, <SCNNode: 0x28141b000 'mixamorig:RightForeArm' pos(-0.000001 21.716059 0.000006) rot(0.000001 -1.000001 0.000000 0.324329) scale(1.000000 1.000000 1.000000) | 1 child>, <SCNNode: 0x281419c00 'mixamorig:RightHand' pos(-0.000003 26.379040 0.000010) rot(-0.028329 -0.023942 0.999324 0.100333) scale(1.000000 1.000001 1.000000) | 5 children>, <SCNNode: 0x281419000 'mixamorig:RightHandThumb1' pos(3.170464 3.815781 1.149773) rot(0.943509 -0.327919 0.047541 3.426777) scale(0.999999 0.999999 1.000000) | 1 child>, <SCNNode: 0x28141a700 'mixamorig:RightHandThumb2' pos(0.223216 -4.067917 0.000010) rot(0.005818 -0.189213 0.981980 0.049189) scale(1.000000 1.000000 1.000000) | 1 child>, <SCNNode: 0x28141af00 'mixamorig:RightHandThumb3' pos(0.026150 -4.023833 -0.000009) rot(-0.001228 -0.030981 0.999523 0.091774) scale(1.000000 1.000000 1.000000) | 1 child>, <SCNNode: 0x281418300 'mixamorig:RightHandIndex1' pos(4.231338 13.332376 -0.334921) rot(0.999931 -0.011301 0.003295 3.143733) scale(0.999999 1.000000 0.999999) | 1 child>, <SCNNode: 0x281419200 'mixamorig:RightHandIndex2' pos(0.193833 -2.489990 -0.000002) rot(0.004894 -0.118223 0.992961 0.073298) scale(1.000000 1.000000 1.000001) | 1 child>, <SCNNode: 0x281418e00 'mixamorig:RightHandIndex3' pos(0.010123 -2.064481 0.000025) rot(0.000281 0.007765 0.999972 0.081131) scale(1.000000 1.000000 1.000000) | 1 child>, <SCNNode: 0x281419f00 'mixamorig:RightHandMiddle1' pos(1.403139 13.946581 0.038103) rot(0.999205 -0.039819 -0.002053 3.144565) scale(1.000000 1.000000 1.000002) | 1 child>, <SCNNode: 0x28141b400 'mixamorig:RightHandMiddle2' pos(0.055424 -2.688393 0.000020) rot(0.002364 -0.190886 0.982097 0.016209) scale(1.000000 1.000000 0.999999) | 1 child>, <SCNNode: 0x281419b00 'mixamorig:RightHandMiddle3' pos(0.010795 -2.305432 0.000037) rot(-0.000204 -0.028160 0.999876 0.027090) scale(1.000000 1.000000 1.000000) | 1 child>, <SCNNode: 0x28141b500 'mixamorig:RightHandRing1' pos(-1.372692 13.538776 0.908539) rot(0.996954 -0.077249 -0.010735 3.144805) scale(1.000000 1.000001 1.000000) | 1 child>, <SCNNode: 0x281412900 'mixamorig:RightHandRing2' pos(-0.134695 -2.472683 -0.000014) rot(0.000006 -0.004542 -1.000007 0.116118) scale(1.000000 0.999999 0.999999) | 1 child>, <SCNNode: 0x281410700 'mixamorig:RightHandRing3' pos(0.133790 -2.165903 -0.000006) rot(-0.002814 0.090545 0.995856 0.061615) scale(1.000000 1.000000 1.000000) | 1 child>, <SCNNode: 0x281410a00 'mixamorig:RightHandPinky1' pos(-3.134353 11.769386 1.906007) rot(0.994801 -0.088629 -0.050165 3.145445) scale(1.000000 1.000000 1.000000) | 1 child>, <SCNNode: 0x281410900 'mixamorig:RightHandPinky2' pos(-0.174333 -2.242082 -0.000010) rot(0.000336 -0.022658 -0.999748 0.183725) scale(1.000000 0.999999 0.999999) | 1 child>, <SCNNode: 0x281411e00 'mixamorig:RightHandPinky3' pos(0.204820 -1.923053 0.000009) rot(-0.001335 0.028141 0.999587 0.118633) scale(1.000000 1.000000 1.000000) | 1 child>, <SCNNode: 0x281413b00 'mixamorig:LeftUpLeg' pos(10.128629 -5.802905 -0.582704) rot(0.002196 0.022513 0.999744 3.155192) scale(0.999999 1.000000 0.999999) | 1 child>, <SCNNode: 0x281411c00 'mixamorig:LeftLeg' pos(0.000001 41.134518 0.000000) rot(-0.985850 -0.035503 -0.163892 0.168186) scale(1.000000 1.000000 1.000000) | 1 child>, <SCNNode: 0x281413800 'mixamorig:LeftFoot' pos(0.000001 37.253517 0.000001) rot(0.991552 -0.031747 0.125767 1.024575) scale(1.000000 1.000000 1.000000) | 1 child>, <SCNNode: 0x281413f00 'mixamorig:LeftToeBase' pos(0.000001 19.919283 0.000001) rot(0.972619 -0.218446 0.079321 0.714629) scale(1.000000 1.000001 1.000000) | 1 child>, <SCNNode: 0x281413500 'mixamorig:RightUpLeg' pos(-10.015044 -5.802899 -0.720661) rot(-0.002302 0.024767 0.999691 3.128021) scale(0.999999 1.000000 1.000000) | 1 child>, <SCNNode: 0x281413000 'mixamorig:RightLeg' pos(0.000000 41.135094 0.000000) rot(-0.986801 0.035620 0.158016 0.173853) scale(1.000000 1.000000 1.000000) | 1 child>, <SCNNode: 0x281413d00 'mixamorig:RightFoot' pos(-0.000000 37.267471 0.000000) rot(0.991526 0.031798 -0.125961 1.023309) scale(1.000000 1.000000 1.000000) | 1 child>, <SCNNode: 0x281410100 'mixamorig:RightToeBase' pos(0.000001 19.857279 -0.000001) rot(0.972241 0.219820 -0.080163 0.717694) scale(1.000000 1.000000 0.999999) | 1 child>]
    unique bone transforms 50: [__C.SCNMatrix4(m11: 0.9999999, m12: 0.0, m13: 0.0, m14: 0.0, m21: 0.0, m22: 1.0, m23: -1.6292067e-07, m24: 0.0, m31: 0.0, m32: 1.6292067e-07, m33: 1.0, m34: 0.0, m41: 0.067430995, m42: -99.25183, m43: -15.462143, m44: 1.0), __C.SCNMatrix4(m11: 0.9999993, m12: 0.0011885901, m13: 0.000113368966, m14: 0.0, m21: -0.0011939845, m22: 0.9954814, m23: 0.09494962, m24: 0.0, m31: -5.384209e-10, m32: -0.09494969, m33: 0.99548215, m34: 0.0, m41: 0.18593584, m42: -107.827805, m43: -24.816217, m44: 1.0), __C.SCNMatrix4(m11: 0.9999993, m12: 0.0011885901, m13: 0.00011336904, m14: 0.0, m21: -0.0011939848, m22: 0.9954814, m23: 0.09494978, m24: 0.0, m31: -3.856258e-10, m32: -0.09494986, m33: 0.99548215, m34: 0.0, m41: 0.18593591, m42: -120.069214, m43: -24.816233, m44: 1.0), __C.SCNMatrix4(m11: 0.9999993, m12: 0.0011885896, m13: 0.00011336899, m14: 0.0, m21: -0.0011939842, m22: 0.9954814, m23: 0.09494972, m24: 0.0, m31: -4.365575e-10, m32: -0.09494979, m33: 0.99548215, m34: 0.0, m41: 0.18593587, m42: -134.0594, m43: -24.816225, m44: 1.0), __C.SCNMatrix4(m11: 0.9999999, m12: -1.9184638e-11, m13: 8.9477065e-11, m14: 0.0, m21: -4.2632557e-11, m22: 1.0, m23: -1.5134046e-07, m24: 0.0, m31: -5.4513238e-11, m32: 1.4551891e-07, m33: 1.0, m34: 0.0, m41: 0.0050735483, m42: -151.47794, m43: -10.480775, m44: 1.0), __C.SCNMatrix4(m11: 0.9999999, m12: -1.6740022e-10, m13: 8.0035596e-11, m14: 0.0, m21: 2.3925031e-10, m22: 1.0, m23: -2.0626135e-07, m24: 0.0, m31: -5.093172e-11, m32: 2.0626135e-07, m33: 1.0000001, m34: 0.0, m41: 0.0050735325, m42: -158.56575, m43: -11.369449, m44: 1.0), __C.SCNMatrix4(m11: -0.042036895, m12: 0.895135, m13: -0.44380844, m14: 0.0, m21: -0.09481588, m22: -0.44577053, m23: -0.89011145, m24: 0.0, m31: -0.9946069, m32: 0.004662603, m33: 0.10361187, m34: 0.0, m41: 24.786566, m42: 60.53766, m43: 133.74414, m44: 0.99999994), __C.SCNMatrix4(m11: 0.010898933, m12: 0.5794067, m13: -0.81496567, m14: 0.0, m21: 0.0114273215, m22: -0.81503296, m23: -0.57930195, m24: 0.0, m31: -0.9998755, m32: -0.0029990708, m33: -0.015504064, m34: 0.0, m41: 8.74856, m42: 105.12531, m43: 97.726364, m44: 1.0), __C.SCNMatrix4(m11: 0.46226612, m12: 0.41322914, m13: -0.78457093, m14: 0.0, m21: -0.23189315, m22: -0.7976551, m23: -0.55675113, m24: 0.0, m31: -0.85588306, m32: 0.43930387, m33: -0.272904, m34: 0.0, m41: 23.435125, m42: 81.78463, m43: 96.67618, m44: 1.0), __C.SCNMatrix4(m11: 0.6367329, m12: 0.2718283, m13: -0.7215819, m14: 0.0, m21: -0.091787815, m22: -0.9024278, m23: -0.4209497, m24: 0.0, m31: -0.7656019, m32: 0.33426505, m33: -0.54965514, m34: 0.0, m41: -0.40321463, m42: 74.48844, m43: 86.09734, m44: 0.9999999), __C.SCNMatrix4(m11: 0.6801306, m12: 0.32256818, m13: 0.65830994, m14: 0.0, m21: -0.57938343, m22: 0.7867019, m23: 0.2131083, m24: 0.0, m31: -0.44915202, m32: -0.5263551, m33: 0.7219507, m34: 0.0, m41: 41.452923, m42: -78.46882, m43: -65.745674, m44: 1.0), __C.SCNMatrix4(m11: 0.6801305, m12: 0.42549485, m13: 0.5969728, m14: 0.0, m21: -0.5793832, m22: 0.8109088, m23: 0.08211165, m24: 0.0, m31: -0.44915265, m32: -0.40172255, m33: 0.79804826, m34: 0.0, m41: 41.655552, m42: -84.30434, m43: -52.71702, m44: 1.0), __C.SCNMatrix4(m11: 0.67862004, m12: 0.0011207301, m13: 0.73448867, m14: 0.0, m21: -0.27284095, m22: 0.92882824, m23: 0.2506701, m24: 0.0, m31: -0.6819323, m32: -0.3705091, m33: 0.6306265, m34: 0.0, m41: 15.883295, m42: -74.277115, m43: -73.56784, m44: 1.0), __C.SCNMatrix4(m11: 0.67862016, m12: 0.14068235, m13: 0.72089064, m14: 0.0, m21: -0.27284002, m22: 0.9595393, m23: 0.06958672, m24: 0.0, m31: -0.68193245, m32: -0.24391167, m33: 0.689546, m34: 0.0, m41: 16.009493, m42: -84.47152, m43: -58.582344, m44: 1.0), __C.SCNMatrix4(m11: 0.6786201, m12: 0.117865115, m13: 0.7249707, m14: 0.0, m21: -0.27284014, m22: 0.9568656, m23: 0.09982971, m24: 0.0, m31: -0.6819325, m32: -0.26554844, m33: 0.6815059, m34: 0.0, m41: 16.031427, m42: -80.55404, m43: -61.154636, m44: 1.0), __C.SCNMatrix4(m11: 0.63672215, m12: -0.1602448, m13: 0.7542472, m14: 0.0, m21: -0.09175094, m22: 0.95547414, m23: 0.28044048, m24: 0.0, m31: -0.7656151, m32: -0.24777088, m33: 0.59366035, m34: 0.0, m41: 0.74353313, m42: -73.04021, m43: -76.06843, m44: 0.9999999), __C.SCNMatrix4(m11: 0.6367222, m12: 0.0064371815, m13: 0.77105516, m14: 0.0, m21: -0.091751024, m22: 0.9934922, m23: 0.06746133, m24: 0.0, m31: -0.76561534, m32: -0.113706276, m33: 0.6331619, m34: 0.0, m41: 0.7669897, m42: -85.073586, m43: -59.089073, m44: 1.0000001), __C.SCNMatrix4(m11: 0.6367221, m12: -0.08259266, m13: 0.76664615, m14: 0.0, m21: -0.09175105, m22: 0.97906816, m23: 0.18166862, m24: 0.0, m31: -0.7656154, m32: -0.18601915, m33: 0.61580825, m34: 0.0, m41: 0.7979228, m42: -75.384384, m43: -68.24516, m44: 1.0000001), __C.SCNMatrix4(m11: 0.60543567, m12: 0.01758827, m13: 0.7957002, m14: 0.0, m21: 0.001413538, m22: 0.9997304, m23: -0.023173383, m24: 0.0, m31: -0.7958932, m32: 0.015154859, m33: 0.6052479, m34: 0.0, m41: -8.448981, m42: -92.2586, m43: -49.920914, m44: 1.0), __C.SCNMatrix4(m11: 0.6054356, m12: 0.17779897, m13: 0.7757808, m14: 0.0, m21: 0.0014146351, m22: 0.9744859, m23: -0.22444332, m24: 0.0, m31: -0.7958932, m32: 0.13698359, m33: 0.58973724, m34: 0.0, m41: -8.581333, m42: -97.882996, m43: -30.801731, m44: 1.0), __C.SCNMatrix4(m11: 0.60543585, m12: 0.04373034, m13: 0.7946921, m14: 0.0, m21: 0.0014140985, m22: 0.99842846, m23: -0.05601863, m24: 0.0, m31: -0.79589295, m32: 0.035039578, m33: 0.6044231, m34: 0.0, m41: -8.544707, m42: -89.106735, m43: -46.579468, m44: 0.99999994), __C.SCNMatrix4(m11: 0.5346669, m12: 0.15938242, m13: 0.82989585, m14: 0.0, m21: 0.16554846, m22: 0.9432698, m23: -0.28781214, m24: 0.0, m31: -0.8286888, m32: 0.2912716, m33: 0.4779496, m34: 0.0, m41: -21.671741, m42: -99.22054, m43: -23.21426, m44: 1.0), __C.SCNMatrix4(m11: 0.53466624, m12: 0.2598579, m13: 0.80411726, m14: 0.0, m21: 0.16554873, m22: 0.90090185, m23: -0.40121025, m24: 0.0, m31: -0.8286891, m32: 0.3476341, m33: 0.43866265, m34: 0.0, m41: -21.793581, m42: -99.508316, m43: -11.106523, m44: 1.0), __C.SCNMatrix4(m11: -0.052397292, m12: -0.8952406, m13: 0.4424912, m14: 0.0, m21: 0.094881475, m22: -0.4455583, m23: -0.89021075, m24: 0.0, m31: 0.99410856, m32: -0.004660412, m33: 0.108287826, m34: 0.0, m41: -24.79176, m42: 60.590893, m43: 133.71458, m44: 1.0), __C.SCNMatrix4(m11: -0.015019545, m12: -0.57939535, m13: 0.814908, m14: 0.0, m21: 0.019721681, m22: -0.8150132, m23: -0.57910657, m24: 0.0, m31: 0.9996928, m32: 0.0073734326, m33: 0.023667771, m34: 0.0, m41: -13.465044, m42: 105.00213, m43: 97.30525, m44: 1.0000001), __C.SCNMatrix4(m11: 0.46742532, m12: -0.41376442, m13: 0.78122497, m14: 0.0, m21: 0.2254531, m22: -0.79869145, m23: -0.55790913, m24: 0.0, m31: 0.8548008, m32: 0.4369105, m33: -0.28004414, m34: 0.0, m41: -22.47753, m42: 81.89982, m43: 96.81628, m44: 1.0), __C.SCNMatrix4(m11: 0.696373, m12: -0.29543415, m13: 0.65405136, m14: 0.0, m21: 0.03145783, m22: -0.89790016, m23: -0.4390737, m24: 0.0, m31: 0.71699035, m32: 0.32633406, m33: -0.6159799, m34: 0.0, m41: 10.279617, m42: 73.21015, m43: 86.57817, m44: 1.0000001), __C.SCNMatrix4(m11: 0.7355213, m12: -0.32002175, m13: -0.59715587, m14: 0.0, m21: 0.5593576, m22: 0.78415996, m23: 0.26872554, m24: 0.0, m31: 0.38226804, m32: -0.53167653, m33: 0.75577265, m34: 0.0, m41: -35.560814, m42: -77.77521, m43: -69.64634, m44: 1.0), __C.SCNMatrix4(m11: 0.7355217, m12: -0.41824308, m13: -0.53299254, m14: 0.0, m21: 0.5593576, m22: 0.81876236, m23: 0.12941584, m24: 0.0, m31: 0.38226724, m32: -0.3933212, m33: 0.8361645, m34: 0.0, m41: -35.783997, m42: -84.6172, m43: -55.886295, m44: 1.0), __C.SCNMatrix4(m11: 0.73552144, m12: -0.37871414, m13: -0.5617685, m14: 0.0, m21: 0.5593577, m22: 0.80729645, m23: 0.1881284, m24: 0.0, m31: 0.38226718, m32: -0.45260155, m33: 0.8056204, m34: 0.0, m41: -35.81022, m42: -76.353004, m43: -61.55327, m44: 0.99999994), __C.SCNMatrix4(m11: 0.74790645, m12: 0.0043960484, m13: -0.66379017, m14: 0.0, m21: 0.25329384, m22: 0.9224268, m23: 0.29149967, m24: 0.0, m31: 0.613581, m32: -0.38614693, m33: 0.68877614, m34: 0.0, m41: -8.999896, m42: -72.97529, m43: -75.95693, m44: 1.0), __C.SCNMatrix4(m11: 0.7479065, m12: -0.13354473, m13: -0.6502324, m14: 0.0, m21: 0.2532938, m22: 0.9628521, m23: 0.09359077, m24: 0.0, m31: 0.6135809, m32: -0.23469536, m33: 0.75394976, m34: 0.0, m41: -9.193771, m42: -84.72221, m43: -59.663788, m44: 1.0), __C.SCNMatrix4(m11: 0.7479063, m12: -0.14500403, m13: -0.64777344, m14: 0.0, m21: 0.25329396, m22: 0.9643544, m23: 0.0765767, m24: 0.0, m31: 0.6135811, m32: -0.22134775, m33: 0.75797576, m34: 0.0, m41: -9.203954, m42: -83.69826, m43: -58.195118, m44: 1.0), __C.SCNMatrix4(m11: 0.7137817, m12: 0.15073195, m13: -0.6839555, m14: 0.0, m21: 0.08860187, m22: 0.9492857, m23: 0.30167112, m24: 0.0, m31: 0.69474095, m32: -0.27592775, m33: 0.66422635, m34: 0.0, m41: 5.082544, m42: -71.878815, m43: -76.7316, m44: 1.0), __C.SCNMatrix4(m11: 0.7137818, m12: -0.01860387, m13: -0.70012087, m14: 0.0, m21: 0.08860189, m22: 0.994014, m23: 0.06391676, m24: 0.0, m31: 0.694741, m32: -0.10765555, m33: 0.71115613, m34: 0.0, m41: 5.0271134, m42: -85.648315, m43: -57.787743, m44: 1.0), __C.SCNMatrix4(m11: 0.7137821, m12: 0.04167921, m13: -0.6991265, m14: 0.0, m21: 0.08860085, m22: 0.98483396, m23: 0.14916946, m24: 0.0, m31: 0.6947409, m32: -0.16841848, m33: 0.6992625, m34: 0.0, m41: 5.0164437, m42: -78.06403, m43: -64.74144, m44: 1.0), __C.SCNMatrix4(m11: 0.6862833, m12: -0.05333014, m13: -0.7253772, m14: 0.0, m21: 0.0019170358, m22: 0.99743724, m23: -0.071518, m24: 0.0, m31: 0.7273317, m32: 0.04769146, m33: 0.68462753, m34: 0.0, m41: 13.608107, m42: -94.265274, m43: -44.324017, m44: 1.0), __C.SCNMatrix4(m11: 0.68628365, m12: -0.15721922, m13: -0.7101394, m14: 0.0, m21: 0.0019170137, m22: 0.976746, m23: -0.2143906, m24: 0.0, m31: 0.72733146, m32: 0.14577201, m33: 0.6706267, m34: 0.0, m41: 13.742838, m42: -97.218185, m43: -30.645153, m44: 1.0), __C.SCNMatrix4(m11: 0.6862832, m12: -0.02797979, m13: -0.7267966, m14: 0.0, m21: 0.0019167359, m22: 0.9993258, m23: -0.036660966, m24: 0.0, m31: 0.7273317, m32: 0.023767216, m33: 0.68587494, m34: 0.0, m41: 13.609035, m42: -88.0585, m43: -47.114384, m44: 1.0), __C.SCNMatrix4(m11: 0.58176553, m12: 0.02904911, m13: -0.81283754, m14: 0.0, m21: -0.228503, m22: 0.9649507, m23: -0.12905931, m24: 0.0, m31: 0.7805994, m32: 0.26081836, m33: 0.568013, m34: 0.0, m41: 30.542631, m42: -93.21381, m43: -38.76349, m44: 1.0000001), __C.SCNMatrix4(m11: 0.5817661, m12: -0.2033472, m13: -0.78752625, m14: 0.0, m21: -0.22850323, m22: 0.8883859, m23: -0.39819157, m24: 0.0, m31: 0.7805989, m32: 0.4116069, m33: 0.47036743, m34: 0.0, m41: 30.717035, m42: -98.23984, m43: -11.287221, m44: 1.0), __C.SCNMatrix4(m11: 0.5817656, m12: -0.14677322, m13: -0.800004, m14: 0.0, m21: -0.22850198, m22: 0.91447747, m23: -0.33394262, m24: 0.0, m31: 0.78059965, m32: 0.3770791, m33: 0.4984736, m34: 0.0, m41: 30.5121, m42: -95.26906, m43: -18.114779, m44: 1.0), __C.SCNMatrix4(m11: -0.99468595, m12: 0.10296304, m13: 9.158982e-08, m14: 0.0, m21: -0.10296249, m22: -0.9946796, m23: 0.003343006, m24: 0.0, m31: 0.00034434724, m32: 0.0033252267, m33: 0.9999944, m34: 0.0, m41: 19.624392, m42: 91.8663, m43: -15.191778, m44: 1.0), __C.SCNMatrix4(m11: -0.99720347, m12: 0.0737415, m13: 0.012201801, m14: 0.0, m21: -0.07474382, m22: -0.9843627, m23: -0.15951015, m24: 0.0, m31: 0.00024852925, m32: -0.15997595, m33: 0.98712105, m34: 0.0, m41: 18.179338, m42: 53.059746, m43: -6.6176767, m44: 1.0), __C.SCNMatrix4(m11: -0.9922815, m12: 0.12313272, m13: -0.01471903, m14: 0.0, m21: -0.0884585, m22: -0.6196267, m23: 0.77989566, m24: 0.0, m31: 0.08691041, m32: 0.775178, m33: 0.62573606, m34: 0.0, m41: 17.52814, m42: 0.70961213, m43: -17.78704, m44: 0.9999999), __C.SCNMatrix4(m11: -0.9815543, m12: 0.18828706, m13: 0.03317476, m14: 0.0, m21: 0.039078463, m22: 0.027729416, m23: 0.9988511, m24: 0.0, m31: 0.1871508, m32: 0.98172253, m33: -0.03457592, m34: 0.0, m41: 14.414444, m42: -27.81827, m43: -3.3154383, m44: 0.99999994), __C.SCNMatrix4(m11: -0.9946862, m12: -0.10296104, m13: -1.3096734e-08, m14: 0.0, m21: 0.102959014, m22: -0.9946657, m23: 0.006305074, m24: 0.0, m31: -0.0006492962, m32: 0.0062715583, m33: 0.9999801, m34: 0.0, m41: -19.640753, m42: 91.81984, m43: -15.330408, m44: 1.0), __C.SCNMatrix4(m11: -0.9972006, m12: -0.07371295, m13: -0.012604057, m14: 0.0, m21: 0.07478128, m22: -0.98398876, m23: -0.16178371, m24: 0.0, m31: -0.00047680218, m32: -0.16227324, m33: 0.9867458, m34: 0.0, m41: -18.199074, m42: 53.07072, m43: -6.4821177, m44: 1.0), __C.SCNMatrix4(m11: -0.9922379, m12: -0.123518154, m13: 0.01444218, m14: 0.0, m21: 0.08870504, m22: -0.62157524, m23: 0.7783157, m24: 0.0, m31: -0.087159246, m32: 0.773555, m33: 0.6277068, m34: 0.0, m41: -17.559282, m42: 0.8270561, m43: -17.718748, m44: 0.99999994), __C.SCNMatrix4(m11: -0.9812038, m12: -0.18996924, m13: -0.03395047, m14: 0.0, m21: -0.03997338, m22: 0.02796285, m23: 0.99880946, m24: 0.0, m31: -0.18879364, m32: 0.9813919, m33: -0.0350311, m34: 0.0, m41: -14.419991, m42: -27.666416, m43: -3.3263946, m44: 1.0000001)]
    bone with depth is (min depth): mixamorig:Hips -> 3 ( -1 )
    bone with depth is (min depth): mixamorig:Spine -> 4 ( 3 )
    bone with depth is (min depth): mixamorig:Spine1 -> 5 ( 3 )
    bone with depth is (min depth): mixamorig:Spine2 -> 6 ( 3 )
    bone with depth is (min depth): mixamorig:Neck -> 7 ( 3 )
    bone with depth is (min depth): mixamorig:Head -> 8 ( 3 )
    bone with depth is (min depth): mixamorig:LeftShoulder -> 7 ( 3 )
    bone with depth is (min depth): mixamorig:LeftArm -> 8 ( 3 )
    bone with depth is (min depth): mixamorig:LeftForeArm -> 9 ( 3 )
    bone with depth is (min depth): mixamorig:LeftHand -> 10 ( 3 )
    bone with depth is (min depth): mixamorig:LeftHandThumb1 -> 11 ( 3 )
    bone with depth is (min depth): mixamorig:LeftHandThumb2 -> 12 ( 3 )
    bone with depth is (min depth): mixamorig:LeftHandIndex1 -> 11 ( 3 )
    bone with depth is (min depth): mixamorig:LeftHandIndex2 -> 12 ( 3 )
    bone with depth is (min depth): mixamorig:LeftHandIndex3 -> 13 ( 3 )
    bone with depth is (min depth): mixamorig:LeftHandMiddle1 -> 11 ( 3 )
    bone with depth is (min depth): mixamorig:LeftHandMiddle2 -> 12 ( 3 )
    bone with depth is (min depth): mixamorig:LeftHandMiddle3 -> 13 ( 3 )
    bone with depth is (min depth): mixamorig:LeftHandRing1 -> 11 ( 3 )
    bone with depth is (min depth): mixamorig:LeftHandRing2 -> 12 ( 3 )
    bone with depth is (min depth): mixamorig:LeftHandRing3 -> 13 ( 3 )
    bone with depth is (min depth): mixamorig:LeftHandPinky1 -> 11 ( 3 )
    bone with depth is (min depth): mixamorig:LeftHandPinky2 -> 12 ( 3 )
    bone with depth is (min depth): mixamorig:RightShoulder -> 7 ( 3 )
    bone with depth is (min depth): mixamorig:RightArm -> 8 ( 3 )
    bone with depth is (min depth): mixamorig:RightForeArm -> 9 ( 3 )
    bone with depth is (min depth): mixamorig:RightHand -> 10 ( 3 )
    bone with depth is (min depth): mixamorig:RightHandThumb1 -> 11 ( 3 )
    bone with depth is (min depth): mixamorig:RightHandThumb2 -> 12 ( 3 )
    bone with depth is (min depth): mixamorig:RightHandThumb3 -> 13 ( 3 )
    bone with depth is (min depth): mixamorig:RightHandIndex1 -> 11 ( 3 )
    bone with depth is (min depth): mixamorig:RightHandIndex2 -> 12 ( 3 )
    bone with depth is (min depth): mixamorig:RightHandIndex3 -> 13 ( 3 )
    bone with depth is (min depth): mixamorig:RightHandMiddle1 -> 11 ( 3 )
    bone with depth is (min depth): mixamorig:RightHandMiddle2 -> 12 ( 3 )
    bone with depth is (min depth): mixamorig:RightHandMiddle3 -> 13 ( 3 )
    bone with depth is (min depth): mixamorig:RightHandRing1 -> 11 ( 3 )
    bone with depth is (min depth): mixamorig:RightHandRing2 -> 12 ( 3 )
    bone with depth is (min depth): mixamorig:RightHandRing3 -> 13 ( 3 )
    bone with depth is (min depth): mixamorig:RightHandPinky1 -> 11 ( 3 )
    bone with depth is (min depth): mixamorig:RightHandPinky2 -> 12 ( 3 )
    bone with depth is (min depth): mixamorig:RightHandPinky3 -> 13 ( 3 )
    bone with depth is (min depth): mixamorig:LeftUpLeg -> 4 ( 3 )
    bone with depth is (min depth): mixamorig:LeftLeg -> 5 ( 3 )
    bone with depth is (min depth): mixamorig:LeftFoot -> 6 ( 3 )
    bone with depth is (min depth): mixamorig:LeftToeBase -> 7 ( 3 )
    bone with depth is (min depth): mixamorig:RightUpLeg -> 4 ( 3 )
    bone with depth is (min depth): mixamorig:RightLeg -> 5 ( 3 )
    bone with depth is (min depth): mixamorig:RightFoot -> 6 ( 3 )
    bone with depth is (min depth): mixamorig:RightToeBase -> 7 ( 3 )
    min depth nodes are: (
        "<SCNNode: 0x28143e800 'mixamorig:Hips' pos(-0.056763 98.255325 0.653417) | 3 children>"
    )
    skeleton bone is : <SCNNode: 0x28143e800 'mixamorig:Hips' pos(-0.056763 98.255325 0.653417) | 3 children>
    Making Skinner for node: ely_vanguardsoldier_kerwinatienza_Mesh vertices: 30748 max-weights: 5, nBones: 50
    weight counter 153740
    Making bone indices geometry source: ["mixamorig:Hips", "mixamorig:Spine", "mixamorig:Spine1", "mixamorig:Spine2", "mixamorig:Neck", "mixamorig:Head", "mixamorig:LeftShoulder", "mixamorig:LeftArm", "mixamorig:LeftForeArm", "mixamorig:LeftHand", "mixamorig:LeftHandThumb1", "mixamorig:LeftHandThumb2", "mixamorig:LeftHandIndex1", "mixamorig:LeftHandIndex2", "mixamorig:LeftHandIndex3", "mixamorig:LeftHandMiddle1", "mixamorig:LeftHandMiddle2", "mixamorig:LeftHandMiddle3", "mixamorig:LeftHandRing1", "mixamorig:LeftHandRing2", "mixamorig:LeftHandRing3", "mixamorig:LeftHandPinky1", "mixamorig:LeftHandPinky2", "mixamorig:RightShoulder", "mixamorig:RightArm", "mixamorig:RightForeArm", "mixamorig:RightHand", "mixamorig:RightHandThumb1", "mixamorig:RightHandThumb2", "mixamorig:RightHandThumb3", "mixamorig:RightHandIndex1", "mixamorig:RightHandIndex2", "mixamorig:RightHandIndex3", "mixamorig:RightHandMiddle1", "mixamorig:RightHandMiddle2", "mixamorig:RightHandMiddle3", "mixamorig:RightHandRing1", "mixamorig:RightHandRing2", "mixamorig:RightHandRing3", "mixamorig:RightHandPinky1", "mixamorig:RightHandPinky2", "mixamorig:RightHandPinky3", "mixamorig:LeftUpLeg", "mixamorig:LeftLeg", "mixamorig:LeftFoot", "mixamorig:LeftToeBase", "mixamorig:RightUpLeg", "mixamorig:RightLeg", "mixamorig:RightFoot", "mixamorig:RightToeBase"]
    50
    50
     assigned skinner <SCNSkinner: 0x283aeca80> skeleton: Optional(<SCNNode: 0x28143e800 'mixamorig:Hips' pos(-0.056763 98.255325 0.653417) | 3 children>)
    Number of animations in scene: 1
    Animation data for animation at index: 0
    Generated animation name: ely-1
    This animation ely-1 has 66 channels with duration 1.0 ticks per sec: 30.0
     The channel Armature has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:Head has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:HeadTop_End has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:Hips has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:LeftArm has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:LeftFoot has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:LeftForeArm has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:LeftHand has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:LeftHandIndex1 has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:LeftHandIndex2 has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:LeftHandIndex3 has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:LeftHandIndex4 has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:LeftHandMiddle1 has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:LeftHandMiddle2 has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:LeftHandMiddle3 has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:LeftHandMiddle4 has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:LeftHandPinky1 has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:LeftHandPinky2 has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:LeftHandPinky3 has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:LeftHandPinky4 has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:LeftHandRing1 has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:LeftHandRing2 has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:LeftHandRing3 has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:LeftHandRing4 has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:LeftHandThumb1 has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:LeftHandThumb2 has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:LeftHandThumb3 has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:LeftHandThumb4 has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:LeftLeg has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:LeftShoulder has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:LeftToeBase has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:LeftToe_End has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:LeftUpLeg has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:Neck has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:RightArm has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:RightFoot has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:RightForeArm has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:RightHand has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:RightHandIndex1 has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:RightHandIndex2 has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:RightHandIndex3 has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:RightHandIndex4 has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:RightHandMiddle1 has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:RightHandMiddle2 has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:RightHandMiddle3 has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:RightHandMiddle4 has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:RightHandPinky1 has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:RightHandPinky2 has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:RightHandPinky3 has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:RightHandPinky4 has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:RightHandRing1 has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:RightHandRing2 has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:RightHandRing3 has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:RightHandRing4 has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:RightHandThumb1 has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:RightHandThumb2 has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:RightHandThumb3 has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:RightHandThumb4 has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:RightLeg has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:RightShoulder has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:RightToeBase has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:RightToe_End has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:RightUpLeg has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:Spine has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:Spine1 has data for 2 position, 2 rotation, 2 scale keyframes
     The channel mixamorig:Spine2 has data for 2 position, 2 rotation, 2 scale keyframes
    skeletonNode: <SCNNode: 0x28143e800 'mixamorig:Hips' pos(-0.056763 98.255325 0.653417) | 3 children>
    animations: {
        "ely-1" = "<AssetImportKit.AssetImporterAnimation: 0x281126920>";
    }
    animationKeys: (Function)
    animScene: <SCNScene: 0x281d2bf00>
     no root: nil nil
    no root animNode
    2020-08-10 15:55:28.865705+1000 demo-uni[3668:1289525] [LayoutConstraints] Unable to simultaneously satisfy constraints.
    	Probably at least one of the constraints in the following list is one you don't want. 
    	Try this: 
    		(1) look at each constraint and try to figure out which you don't expect; 
    		(2) find the code that added the unwanted constraint or constraints and fix it. 
    (
        "<NSLayoutConstraint:0x280b6ae40 H:[UIView:0x103b2dc30]-(135.5)-|   (active, names: '|':UIView:0x103b2cc50 )>",
        "<NSLayoutConstraint:0x280b6ae90 H:|-(135.5)-[UIView:0x103b2dc30]   (active, names: '|':UIView:0x103b2cc50 )>",
        "<NSLayoutConstraint:0x280b07d90 'UIView-Encapsulated-Layout-Width' UIView:0x103b2cc50.width == 0   (active)>"
    )
    
    Will attempt to recover by breaking constraint 
    <NSLayoutConstraint:0x280b6ae40 H:[UIView:0x103b2dc30]-(135.5)-|   (active, names: '|':UIView:0x103b2cc50 )>
    
    Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
    The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKitCore/UIView.h> may also be helpful.
    2020-08-10 15:55:28.866226+1000 demo-uni[3668:1289525] [LayoutConstraints] Unable to simultaneously satisfy constraints.
    	Probably at least one of the constraints in the following list is one you don't want. 
    	Try this: 
    		(1) look at each constraint and try to figure out which you don't expect; 
    		(2) find the code that added the unwanted constraint or constraints and fix it. 
    (
        "<NSLayoutConstraint:0x280b6acb0 UILayoutGuide:0x28113a760'UIViewSafeAreaLayoutGuide'.top == UIView:0x103b2dc30.top + 11   (active)>",
        "<NSLayoutConstraint:0x280b6aee0 V:|-(9)-[UIView:0x103b2dc30]   (active, names: '|':UIView:0x103b2cc50 )>",
        "<NSLayoutConstraint:0x280b6ad00 'UIViewSafeAreaLayoutGuide-top' V:|-(44)-[UILayoutGuide:0x28113a760'UIViewSafeAreaLayoutGuide']   (active, names: '|':UIView:0x103b2cc50 )>"
    )
    
    Will attempt to recover by breaking constraint 
    <NSLayoutConstraint:0x280b6acb0 UILayoutGuide:0x28113a760'UIViewSafeAreaLayoutGuide'.top == UIView:0x103b2dc30.top + 11   (active)>
    
    Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
    The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKitCore/UIView.h> may also be helpful.
    
    
    opened by johndpope 1
  • Infinite loop in scene importer

    Infinite loop in scene importer

    Looks like this code in ScnScene + AssetImport.swift just calls itself repeatedly:

        public static func assimpScene(with url: URL,
                                       postProcessSteps: PostProcessSteps) throws -> AssetImporterScene {
            do {
                let scene = try assimpScene(with: url, postProcessSteps: postProcessSteps)
                return scene
            } catch {
                throw error
            }
        }
    

    But couldn't find any useful initializer in AssetImporter to suggest a decent PR to fix. Should this method be removed?

    opened by jexe 1
  • I have a problem filePath

    I have a problem filePath

    do { let assimpScene = try SCNScene.assimpScene(filePath: "art.scnassets/jill.obj", postProcessSteps: [.debone]) let modelScene = assimpScene.modelScene modelScene!.rootNode.childNodes.forEach { sceneView.scene.rootNode.addChildNode($0) // self.modelContainerNode.addChildNode($0) } // sceneView.scene.rootNode.addChildNode(modelContainerNode) sceneView.scene = modelScene! } catch { print(error.localizedDescription) }

    opened by asdfbinut 1
  • Weird model import for fox with multiple animations

    Weird model import for fox with multiple animations

    Hello, I have a problem trying to load a fbx model created on Blender using AssertImportKit on iOS. The problem is, if I remove animations the model is loaded ok but, if I export all the animations (using Blender), the imported model looks weird, (also if I import the model as a .dae it look ok but just with one animation). I also tried with the Mac SceneKitAssetImport and the result is the same. I attached a few screenshots of the behavior and the original fbx model Captura de Pantalla 2019-04-14 a la(s) 14 47 10 Captura de Pantalla 2019-04-14 a la(s) 14 47 25

    https://www.dropbox.com/s/t87jgou6ejgq6tk/newModelTest_4.fbx?dl=0

    opened by gabmedalv01 1
  • How to guide is not ok

    How to guide is not ok

    Hi!

    First of all, thanks for your work ;) I´m trying to use your framework inside my app, but it´s not so easy as you wrote in "How to install guide". When I add AssetImportKit.framework to my app, it always requests the whole AssetImportKit project... can you please help me or update the guide?

    opened by avianezbq 1
  • node names

    node names

    All works shiny but for programmatic texture replacement we have to point to a named geometry. Is it possible, at least to rename the name with the name of the material? (optional features, obviously) ;)

    opened by Maxsix74 1
  • Embedded texture of 3d model

    Embedded texture of 3d model

    When extracting the embedded texture from a fbx, the format of the textures will be checked in the function "generateCGImageForEmbeddedTexture"

    format = tupleOfInt8sToString(aiTexture.achFormatHint) if(format == "jpg"){} if(format == "png"){}

    However, sometimes the "format" return a ASCII character which make the "if condition" always return false and then no texture will be applied.

    I modify the code to: if(format.substring(to:3) == "jpg"){} if(format.substring(to:3) == "png"){}

    and it work fine. Will there be an update?

    Thank you very much.

    opened by ivanho521 0
  • Mutliple UV Channels not read

    Mutliple UV Channels not read

    Hi!

    I've been trying to load an fbx with multiple UV channels, but had no success. After checking everything on the designer's side (export settings, etc) I've found the problem in AssetImportKit's side.

    It seems that when creating SCNGeometrysources, in the makeTextureGeometrySource method, the code iterates all aiMesh.mTextureCoords but only looks for the first result, as seen here:

    for aiMesh in aiMeshes {
        if let textureCoordinates = aiMesh.mTextureCoords.0 {
            //Process data
        }
    }
    

    The code should correctly process every channel provided by Assimp (8 max, AFAIK).

    I hope this gets fixed soon! :D

    opened by BiohazardWTF 2
  • Appcrash if characterValue cannot be cast in StringValue

    Appcrash if characterValue cannot be cast in StringValue

    Hi,

    I got an Appcrash with some FBX-Files when importing in the aiString + String Value.swift:

    in the Method tupleOf8sToString line 17 (result.append): sometimes the value exceeds the limits of UInt8;

    I got it working with:

    result.append(Character(UnicodeScalar(UInt8(abs(Int(characterValue))))))

    could you please update this?

    Also I noticed, that files are not always recognized because of this bug and the return being longer than expected. So for return in this method I have:

    var res = result as NSString if (res.contains("png")) { res = "png" } else if (res.contains("jpg")) { res = "jpg" } return res

    Both works now in my code and should be easy to adopt.

    Thanks for the lib ;-) helped us a lot

    opened by freeminders123 2
Releases(1.1.1)
Owner
eugene
eugene
ARVoxelKit - Lightweight Framework for Voxel graphic using AR + SceneKit

ARVoxelKit Lightweight Framework for Voxel graphic using AR + SceneKit Requirements ARVoxelKit requires iOS 11 and devices, which support ARKit Usage

null 79 Dec 29, 2022
ARDicee - Simple augmented reality app using SceneKit and ARKit

ARDicee Simple augmented reality app using SceneKit and ARKit Requirements Xcode

donggyu 3 Feb 4, 2022
AR Ruler - A simple iOS app made using ARKit and SceneKit

A simple iOS app made using ARKit and SceneKit.Which can try to simplify little things in your life such as measuring stuff.

Dishant Nagpal 5 Aug 31, 2022
An iOS Framework Capture & record ARKit videos 📹, photos 🌄, Live Photos 🎇, and GIFs 🎆.

An iOS Framework that enables developers to capture videos ?? , photos ?? , Live Photos ?? , and GIFs ?? with ARKit content.

Ahmed Bekhit 1.5k Dec 24, 2022
SwiftAR is a declerative framework to build AR experiences, with a SwiftUI inspired design.

SwiftAR is a declerative framework to build AR experiences, with a SwiftUI inspired design. It builds on the base types Experience, Anchor and

Jan Luca Siewert 49 Jun 10, 2022
ARID - Augmented Reality app using Apple’s ARKit framework which can recognise faces of famous scientists

ARID Augmented Reality app using Apple’s ARKit framework which can recognise fac

Hemanth 0 Jan 12, 2022
A sample collection of basic functions of Apple's AR framework for iOS.

RealityKit-Sampler RealityKitSampler is a sample collection of basic functions of RealityKit, Apple's AR framework for iOS. How to build 1, Download o

MLBoy 74 Dec 21, 2022
Poly is an unofficial Google Poly SDK, written in Swift

?? Unofficial Google Poly SDK in Swift – search, discover, and download 3D models and scenes

patrick piemonte 85 Dec 27, 2022
PlacenoteSDK Sample app in native iOS using ARKit, written primarily in Swift

Placenote SDK for iOS Placenote SDK lets you easily build cloud-based Augmented Reality (AR) apps that pin digital content to locations in the real wo

Placenote 93 Nov 15, 2022
This is a sample AR project written with Swift language for iOS devices

ARSample This is a sample AR project written with Swift language for iOS devices. While I was learning the ARKit framework, I defined this project and

Kamyar Sehati 2 Jun 27, 2022
Unofficial Google ARCore Swift Package for iOS

Google didn't want to make a swift package for ARCore… so let's do it instead.

Max Cobb 4 Jul 15, 2022
Swift framework for loading various 3d models in SceneKit

AssetImportKit AssetImportKit is a cross platform library (macOS, iOS) that coverts the files supported by Assimp to SceneKit scenes. Features AssetIm

eugene 74 Nov 30, 2022
SceneKit-MetalShader-SCNProgram - SceneKit MetalShader SCNProgram

SceneKit-MetalShader-SCNProgram Tech SceneKit (SCNProgram -> SCNGeometry or SCNM

null 1 Jul 16, 2022
A SwiftUI view for dynamically rendering content based upon "loading", "error", and "completed" data loading states.

SwiftUIAsyncContentView A SwiftUI view for dynamically rendering content based upon "loading", "error", and "completed" data loading states.. Installa

CypherPoet 0 Dec 26, 2021
ARVoxelKit - Lightweight Framework for Voxel graphic using AR + SceneKit

ARVoxelKit Lightweight Framework for Voxel graphic using AR + SceneKit Requirements ARVoxelKit requires iOS 11 and devices, which support ARKit Usage

null 79 Dec 29, 2022
An iOS framework for creating JSON-based models. Written in Swift.

An iOS framework for creating JSON-based models. Written in Swift (because it totally rules!) Requirements iOS 8.0+ Xcode 7.3 Swift 2.2 Installation E

Oven Bits 448 Nov 8, 2022
Magical Data Modeling Framework for JSON - allows rapid creation of smart data models. You can use it in your iOS, macOS, watchOS and tvOS apps.

JSONModel - Magical Data Modeling Framework for JSON JSONModel allows rapid creation of smart data models. You can use it in your iOS, macOS, watchOS

JSONModel 6.9k Dec 8, 2022
Magical Data Modeling Framework for JSON - allows rapid creation of smart data models. You can use it in your iOS, macOS, watchOS and tvOS apps.

JSONModel - Magical Data Modeling Framework for JSON JSONModel allows rapid creation of smart data models. You can use it in your iOS, macOS, watchOS

JSONModel 6.8k Nov 19, 2021
SuggestionsKit is a framework for iOS that was created in order to provide developers with the opportunity to educate users on various features of applications.

SuggestionsKit is a framework for iOS that was created in order to provide developers with the opportunity to educate users

Ilya 63 Nov 30, 2022
360 video player for iOS written in swift - a subset of SceneKit that works

DDDKit An open source library to support 360 videos and pictures. It's designed as a generic 3D library that you can use for much more! Example of use

Guillaume Sabran 123 Aug 9, 2022