VRMSceneKit 0.4.4

VRMSceneKit 0.4.4

Tatsuya Tanaka 维护。



VRMKit

VRM 加载器及渲染器

demo demo

有关 "VRM",请参考 此页面

功能

  • 加载 VRM 文件
  • 在 SceneKit 上渲染 VRM 模型(试验性)
  • 面部变形(混合形状)
  • 骨骼动画(皮肤/关节)
  • 物理渲染(弹簧骨骼)

要求

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

安装

Swift 包管理器(推荐)

您可以使用 Swift 包管理器安装此包。

Carthage

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

CocoaPods

pod 'VRMKit'
pod 'VRMSceneKit' # for rendering

使用方法

加载 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

渲染 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

混合形状

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("><"))

骨骼动画

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)

阅读缩略图图像

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

待办事项

  • VRM着色器支持
  • 提升渲染质量
  • 动画支持
  • VRM编辑功能
  • GLTF渲染器支持

贡献

  1. 拉取一条分支!
  2. 创建你的功能分支: git checkout -b my-new-feature
  3. 提交你的更改: git commit -am '添加一些功能'
  4. 推送到分支: git push origin my-new-feature
  5. 提交拉取请求 :D

支持此项目

捐款以帮助我继续开发此项目。

Donate

许可证

VRMKit采用MIT许可证发布。有关详细信息,请参阅LICENSE。

作者

田中真人

Twitter GitHub