All Projects → tattn → VRMKit

tattn / VRMKit

Licence: MIT License
VRM loader and VRM renderer (3D model / gltf)

Programming Languages

swift
15916 projects
ruby
36898 projects - #4 most used programming language
objective c
16641 projects - #2 most used programming language

Projects that are alternatives of or similar to VRMKit

Gltfscenekit
glTF loader for SceneKit
Stars: ✭ 124 (+45.88%)
Mutual labels:  scenekit, gltf
Gltfkit
An Objective-C glTF 2.0 loader and Metal-based renderer
Stars: ✭ 138 (+62.35%)
Mutual labels:  scenekit, gltf
GLTFKit2
A glTF 2.0 asset loader and exporter for Objective-C and Swift.
Stars: ✭ 30 (-64.71%)
Mutual labels:  scenekit, gltf
GVRSCNRenderer
SceneKit Rendering and ARKit 6DOF Tracking for Google Cardboard
Stars: ✭ 19 (-77.65%)
Mutual labels:  scenekit
gltf
👓 Go library for encoding glTF 2.0 files
Stars: ✭ 156 (+83.53%)
Mutual labels:  gltf
ARKit-Sample-ObjC
ARKit sample application is written in Objective C with features of Add, Remove, Scale, Move, Snapshot for single and multiple objects with plane/surface detection, reset session and AR support checking.
Stars: ✭ 72 (-15.29%)
Mutual labels:  scenekit
playcanvas-viewer
glTF 2.0 model viewer
Stars: ✭ 152 (+78.82%)
Mutual labels:  gltf
three-vrm
⚠️ [deprecated] VRM file loader for three.js
Stars: ✭ 44 (-48.24%)
Mutual labels:  vrm
FlightAirMap-3dmodels
3D models used by FlightAirMap with Cesium
Stars: ✭ 23 (-72.94%)
Mutual labels:  gltf
ARKit-SceneKit-Paint-Tiltbrush-Demo
Demo paint app with ARKit and SceneKit
Stars: ✭ 33 (-61.18%)
Mutual labels:  scenekit
pixi-omber-gltf2-vector
Pixi.js library for using vector art created in Omber that's saved in glTF 2.0 format
Stars: ✭ 13 (-84.71%)
Mutual labels:  gltf
pg2b3dm
Tool for converting from PostGIS to b3dm tiles
Stars: ✭ 138 (+62.35%)
Mutual labels:  gltf
Gradient-Meshes-with-SceneKit
Building Gradient Meshes with SceneKit.
Stars: ✭ 40 (-52.94%)
Mutual labels:  scenekit
ARKit-SceneKIit Course
learning resource (SceneKit)
Stars: ✭ 102 (+20%)
Mutual labels:  scenekit
model-browser
model-browser is a command line tool available on npm, for browsing local 3D models via a web browser. It currently only supports GLB files.
Stars: ✭ 19 (-77.65%)
Mutual labels:  gltf
playcanvas-gltf
glTF 2.0 support for the PlayCanvas Engine
Stars: ✭ 97 (+14.12%)
Mutual labels:  gltf
hms-scene-demo
HMS Scene kit demo provides an example of integrating HUAWEI Scene Kit with an app. A 3D graphics rendering engine performs more with less. User-friendly rendering APIs for games, AR & VR apps, and other apps bring your users a stunning visual experience.
Stars: ✭ 18 (-78.82%)
Mutual labels:  scenekit
ARKitSceneKitExample
Simple AR app made with ARKit and SceneKit
Stars: ✭ 53 (-37.65%)
Mutual labels:  scenekit
xeokit-react
Integratation of the xeokit viewer into a React application.
Stars: ✭ 27 (-68.24%)
Mutual labels:  gltf
ThickRedLine
Thick Red Line - drawing thick lines for SceneKit with metal shaders
Stars: ✭ 40 (-52.94%)
Mutual labels:  scenekit

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

Swift Package Manager (Recommended)

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

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].