vrm

VRMKit

VRM loader and VRM renderer (3D model / gltf)

Showing:

Popularity

Downloads/wk

0

GitHub Stars

77

Maintenance

Last Commit

8mos ago

Contributors

3

Package

Dependencies

0

License

MIT

Categories

Readme

VRMKit

VRM loader and VRM renderer

demo demo

For "VRM", please refer to this page.

Features

  • Load VRM file
  • Render VRM models on SceneKit (experimental)
  • Face morphing (blend shape)
  • Bone animation (skin / joint)
  • Physics (spring bone)

Requirements

  • Xcode 12+
  • Swift 5.1+
  • iOS 12.0+

Installation

You can install this package with Swift Package Manager.

Carthage

github "tattn/VRMKit"
$ carthage update --platform ios --use-xcframeworks

CocoaPods

pod 'VRMKit'
pod 'VRMSceneKit' # for rendering

Usage

Load VRM

import VRMKit

let vrm = try VRMLoader().load(named: "model.vrm")
// let vrm = try VRMLoader().load(withUrl: URL(string: "/path/to/model.vrm")!)
// let vrm = try VRMLoader().load(withData: data)

// VRM meta data
vrm.meta.title
vrm.meta.author

// model data
vrm.gltf.jsonData.nodes[0].name

Render VRM

import VRMKit
import VRMSceneKit

@IBOutlet weak var sceneView: SCNView!

let loader = try VRMSceneLoader(named: "model.vrm")
let scene: VRMScene = try loader.loadScene()
let node: VRMNode = scene.vrmNode

sceneView.scene = scene

Blend shapes

joy
node.setBlendShape(value: 1.0, for: .preset(.joy))
angry
node.setBlendShape(value: 1.0, for: .preset(.angry))
><
node.setBlendShape(value: 1.0, for: .custom("><"))

Bone animation

Humanoid
node.setBlendShape(value: 1.0, for: .preset(.fun))
node.humanoid.node(for: .neck)?.eulerAngles = SCNVector3(0, 0, 20 * CGFloat.pi / 180)
node.humanoid.node(for: .leftShoulder)?.eulerAngles = SCNVector3(0, 0, 40 * CGFloat.pi / 180)
node.humanoid.node(for: .rightShoulder)?.eulerAngles = SCNVector3(0, 0, 40 * CGFloat.pi / 180)

Read the thumbnail image

let loader = try VRMSceneLoader(named: "model.vrm")
let image = try loader.loadThumbnail()

ToDo

  • VRM shaders support
  • Improve rendering quality
  • Animation support
  • VRM editing function
  • GLTF renderer support

Contributing

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request :D

Support this project

Donating to help me continue working on this project.

Donate

License

VRMKit is released under the MIT license. See LICENSE for details.

Author

Tatsuya Tanaka

Twitter GitHub

Rate & Review

Great Documentation0
Easy to Use0
Performant0
Highly Customizable0
Bleeding Edge0
Responsive Maintainers0
Poor Documentation0
Hard to Use0
Slow0
Buggy0
Abandoned0
Unwelcoming Community0
100