VRMKit
VRM 加载器及渲染器
有关 "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
混合形状
node.setBlendShape(value: 1.0, for: .preset(.joy))
node.setBlendShape(value: 1.0, for: .preset(.angry))
node.setBlendShape(value: 1.0, for: .custom("><"))
骨骼动画
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渲染器支持
贡献
- 拉取一条分支!
- 创建你的功能分支:
git checkout -b my-new-feature
- 提交你的更改:
git commit -am '添加一些功能'
- 推送到分支:
git push origin my-new-feature
- 提交拉取请求 :D
支持此项目
捐款以帮助我继续开发此项目。
许可证
VRMKit采用MIT许可证发布。有关详细信息,请参阅LICENSE。
作者
田中真人