Swift framework for loading various 3d models in SceneKit

Related tags

Games assimp scenekit 3d
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
ShogibanKit is a framework (not yet) for implementing complex Japanese Chess (Shogii) in Swift. No UI, nor AI.

ShogibanKit Framework Shogi, or Japanese Chess, is based on very complex rules, and it is hard to implement all basic rules. This ShogibanKit aims to

Kaz Yoshikawa 62 Jul 16, 2022
Swift framework for working with Tiled assets in SpriteKit

SKTiled is a framework for integrating Tiled assets with Apple's SpriteKit, built from the ground up with Swift. This project began life as an exercis

Michael Fessenden 235 Dec 20, 2022
Declarative data validation framework, written in Swift

Peppermint Introduction Requirements Installation Swift Package Manager Usage Examples Predicates Constraints Predicate Constraint Compound Constraint

iOS NSAgora 43 Nov 22, 2022
Swift-WordleSolver - Solve and analyze Wordle games. Command-line tool written in Swift

Swift-WordleSolver - Solve and analyze Wordle games. Command-line tool written in Swift

Tobi Schweiger 0 Jan 26, 2022
Imagine Engine - a fast, high performance Swift 2D game engine for Apple's platforms

Welcome to Imagine Engine, an ongoing project that aims to create a fast, high performance Swift 2D game engine for Apple's platforms that is also a j

John Sundell 1.8k Jan 3, 2023
Sage is a cross-platform chess library for Swift.

Sage is not a chess engine; it's a move generator. Hexe, on the other hand, is able to both generate moves and evaluate them.

Nikolai Vazquez 368 Dec 29, 2022
🐦 Flappy Bird reincarnation [Swift 5.3, GameplayKit, SpriteKit, iOS 12].

?? Flappy Bird reincarnation [Swift 5.3, GameplayKit, SpriteKit, iOS 12].

Astemir Eleev 290 Dec 27, 2022
A game engine built with SDL and Swift.

Lark A game engine made with Swift and SDL. This is a pre-alpha work-in-progress. Don't try to use this unless you really know what you're doing. I ba

June Bash 41 Mar 11, 2022
A Swift package for Raylib. Builds Raylib from source so no need to fiddle with libraries.

A Swift package for Raylib. Builds Raylib from source so no need to fiddle with libraries. Just add as a dependency in you game package and go!

Strega's Gate 62 Dec 29, 2022
2048 for Swift

swift-2048 A working port of iOS-2048 to Apple's new Swift language. Like the original Objective-C version, swift-2048 does not rely upon SpriteKit. S

Austin Zheng 3.1k Dec 27, 2022
A simple Chess game for iOS, written in Swift

Swift Chess This is a simple chess game for iPhone and iPad, designed for novice players. It features a very simple AI that plays much like a beginner

Nick Lockwood 135 Jan 6, 2023
swift implementation of flappy bird. More at fullstackedu.com

FlappySwift An implementation of Flappy Bird in Swift for iOS 8. Notes We're launching a course Game Programming with Swift If you are interested in e

newline (formerly Fullstack.io) 9.5k Dec 29, 2022
iOS Swift Game - Push SpriteKit to the limit

iOS Swift Project - Legend Wings - EverWing's Mini Clone EverWing is a popular action game. Survive as much you can, earn gold, and upgrade/purchase n

Wong Guan 512 Dec 20, 2022
Simple memory game written in Swift 4 using VIPER Architecture.

Viper Memory Game Simple memory game written in Swift 4.2 using VIPER Architecture. The Memory Game is a deck of cards where the user needs to find ma

Mati 23 Jun 6, 2022
A project introducing you to Swift

?? My first Memory ?? ?? An introduction to iOS development with Swift. A memory game implementation fetching images from Instagram. This project aims

Alexander Cyon 72 Sep 5, 2022
2D ECS game engine in 100% Swift + SwiftUI for iOS, macOS, tvOS

OctopusKit A 2D game engine based on ECS and written in 100% Swift for iOS, macOS and tvOS. If you've tried making a game in Swift while sticking to t

null 335 Dec 12, 2022
Letter Quiz game with swift for ios

LETTERQUIZ Title: LetterQuiz Category: Game Genre: Trivia, Puzzle, Quiz Platform: IOS Language: Swift 4.0 Available at: Developer: Martin Bruland Crea

Martin Bruland 1 Nov 25, 2022
Flappy Bird in Swift

FlappySwift An implementation of Flappy Bird in Swift for iOS 8. Notes We're launching a course Game Programming with Swift If you are interested in e

null 0 Oct 30, 2021
it's simple swift find different colour game.

SWift_FindColourGame it's simple swift find different colour game. This is a sample project students or kids can use to learn how to find difference c

Jiten Engineer 0 Oct 20, 2021