Open22

vci メモ

ウサギウサギ

2022/2/11 あたり。VCI v0.33.0 らしい。依存 UniVRM は v0.88.0 らしい。
推奨は Unity 2019.4.30f1 らしい。
extensions.VCAST_vci_meta.specVersion: "0.33"

ウサギウサギ

Unity 2019.4.35f1 インストール。長い 🕜
3D プロジェクト作った。
メニュー -> Assets -> Import Package -> Custom Package... をクリック。UniVRM 0.88.0 を指定する。待つ。🕐
選択ツリーが出るのでそのまま Import をクリックする。🕑
Color space は Linear を推奨するよと言われる。
Use recommended Linear ボタンをクリックする。🕧
Close で ok.
UniVCI 0.33.1 を指定する。待つ。🕒
Import クリックする。

Assets\VCI\UniVCI\Scripts\IO\ComponentImporters\AnimationImporter.cs(34,81): warning CS1998: This async method lacks 'await' operators and will run synchronously. Consider using the 'await' operator to await non-blocking API calls, or 'await Task.Run(...)' to do CPU-bound work on a background thread.

パッケージ導入できた模様。

ウサギウサギ

https://virtualcast.jp/wiki/vci/make

VCI 作成方法に従って .vci ファイルを書き出す。中身を読む。

accessors[0] の max: [0.5, 0.5, 0.5], min: [-0.5, -0.5, -0.5] なので、プリミティブの POSITION は 1.0, 2.0 の POSITION ではなく -0.5, 0.5 のままで格納されている。ノードの translation は [0,1,0]、scale は [0.25, 0.25, 0.25]

ウサギウサギ

JSON チャンク一部。

extensionsUsed: [
"KHR_materials_unlit", "KHR_texture_transform", "VCAST_vci_material_unity", "VCAST_vci_meta", "VCAST_vci_collider", "VCAST_vci_rigidbody", "VCAST_vci_item"
]

extensions.VCAST_vci_material_unity.materials: Object[] 材質タグマップ他
extensions.VCAST_vci_meta: Object メタデータ

  • author: "test" 著者
  • description: "チュートリアル用" 記述
  • exporterVCIVersion: "UniVCI-0.33"
  • modelDataLicenseType: "redistribution_prohibited", "cc0"
  • scriptEnableDebugging: true
  • scriptWriteProtected: false
  • specVersion: "0.33"
  • thumbnail: -1 -1の場合、サムネは存在しない。0以上の場合、サムネ指定。
  • title: "VCIsample" この vci ファイルのタイトル
  • version: "1" 文字列。この vci ファイルのバージョン
ウサギウサギ
  • node.extensions
    • VCAST_vci_collider.colliders: Object[]
    • VCAST_vci_item: Object
    • VCAST_vci_rigidbody.rigidbodies: Object[]
ウサギウサギ
  • VCAST_vci_item
    • attractable: true 引き寄せ可能かどうか。grabbable: true が必要
    • grabbable: true 掴めるかどうか
    • groupId: 0 グループID(?)
    • scalable: false 拡大縮小できるかどうか。grabbable: true が必要
    • uniformScaling: false true だと縦横奥行を等しくでしか拡大縮小できない。scalable: true が必要。

グループID は 0 が特別で 1以降をグルーピングに使用する。
https://virtualcast.jp/wiki/vci/component/sdk/subitem/groupid

ウサギウサギ
  • rigidbody
    • angularDrag: 0.05, 角度減衰
    • collisionDetection: "discrete", "continuous", "continuousdynamic", "continuousspeculative"
    • drag: 0, 移動の空気抵抗の大きさ(減衰)。0 は減衰無しを意味する。
    • freezePositionX: false, 位置X成分を不変にするかどうか。
    • freezePositionY: false, 位置Y成分を不変にするかどうか。
    • freezePositionZ: false, 位置Z成分を不変にするかどうか。
    • freezeRotationX: false, 回転X成分を不変にするかどうか。
    • freezeRotationY: false, 回転Y成分を不変にするかどうか。
    • freezeRotationZ: false, 回転Z成分を不変にするかどうか。
    • interpolate: "none", "interpolate", "extrapolate"
    • isKinematic: false
    • mass: 1, 質量(kg)
    • useGravity: false, 重力の影響を受けるか受けないか。false だと空中に留まる。

collisionDetection の説明は以下。
https://virtualcast.jp/blog/2020/05/collisiondetectionchart/

ウサギウサギ
  • collider
    • center: [0, 0, 0], コライダー形状の中心
    • isTrigger: false, 衝突時にトリガーが発生するかどうか。true にすると物理演算側の当たり判定による影響が消える?
    • layer: "default", "item"(VCIItem), "location"(Location), "accessory"(VCIAccessory), "pickup"(VCIPickUp)
    • shape: [1, 1, 1], コライダーの形状パラメーター
    • type: "box", コライダー形状の種類

"capsule" のときも shape: [1, 1, 1] 3要素。半径、高さ、第3要素は軸の方向(0: X, 1: Y, 2: Z)
"sphere" のとき、shape: [1] 半径のみ。

ウサギウサギ

その他

  • mesh

    • extras: { "targetNames": [] }
  • primitive

    • extras: { "targetNames": [] }
ウサギウサギ

古い vci との違い。

  • none や discrete が specVersion: "0.31" では "NONE", "DISCRETE"
  • "application/x-lua" が specVersion: "0.31" では "x_application_lua"
  • specVersion: "0.31" では colliders[0].grabable: false が存在する
ウサギウサギ

JSON のルートに謎のオブジェクトがある.これは three.js の GLTFLoader.js のせい?? それとも本当に格納されている?

meshUses: { 0: 0 }
meshReferences: { 0: 1 }

バイナリで JSON 取り出したら↑格納されていなかったので GLTFLoader.js か何かのせいっぽい。

ウサギウサギ

2023年2月25日。
ダイレクトビュー/direct view の人でもキー操作できる
vci があるらしいと聞いたのだけどこれが使えるのか。
所有権とかどうやって渡しているんだろう。

キー入力はVCIスクリプトを実行しているクライアントのキー入力しか受け取りません。
(if vci.assets.IsMine then の中にInputを書くと、VCIを出した人のみでキー入力が有効になる)

if 文無しで実行すると、VCIを出していない各クライアントでのキー入力が取得できるのね。
入室した時点で空いているオブジェクトに id みたいなのをつけて
全部ではなく1つにだけ反映する、とかやってるのかな。

https://virtualcast.jp/wiki/vci/script/reference/vciinput

ウサギウサギ

2023年6月11日(日)。
root/extensionsUsed: ["VCAST_vci_material_unity",
"VCAST_vci_meta",
"VCAST_vci_collider",
"VCAST_vci_player_spawn_point"]

root/extensions/VCAST_vci_material_unity: {
materials: [
{
floatProperties: {},
keywordMap: {},
name: "Default-Material",
renderQueue: 2000,
shader: "VRM_USE_GLTFSHADER",
tagMap: {},
textureProperties: {},
vectorProperties: {}
}
]
}

root/extensions/VCAST_vci_meta: {
author: "オーサー",
exporterVCIVersion: "UniVCI-0.41",
modelDataLicenseType: "cc0",
scriptEnableDebugging: true,
scriptLicenseType: "cc0",
scriptWriteProtected: false,
specVersion: "0.41",
thumbnail: -1,
title: "MyRoom"
}

ウサギウサギ

2023年6月11日(日)。
root/scene: 0
root/scenes[0]:
{
nodes: [0,1,2]
}

root/nodes[0]
{
// 略
}

root/nodes[1]
{
extensions: {
VCAST_vci_collider: {
colliders: [
{
center: [0,0,0],
isTrigger: false,
layer: "location",
shape: [1,1,1], // 1x1x1 であるが、scale の影響を受けて実際には 10m 四方の壁になる
type: "box"
}
]
}
},
mesh: 0,
name: "Wall2",
rotation: [-0.5, -0.5, -0.5, 0.5],
scale: [10, 1, 10],
translation: [5, 5, 0]
}

root/nodes[2]
{
extensions: {
playerSpawnPoint: {
order: 0,
radius: 0
}
},
name: "PlayerSpawnPoint",
translation: [-2, 0, -2] // unity 上では [-2, 0, 2] だったので Z 反転して glTF 座標系になっている
}

ウサギウサギ

2023年6月11日(日)。壁に対してメッシュコライダーにしてみた。
root/nodes[1]/extenstions/VCAST_vci_collider/colliders[0]:
{
center: [0, 0, 0],
isTrigger: false,
layer: "location",
mesh: {
indices: 6,
isConvex: true,
position: 5
},
shape: [],
type: "mesh"
}

ウサギウサギ

2023年6月11日(日)。
Add Component に並ぶ vci 例。
Loader Sample(VCI.Samples)
VCI Attachable(VCI)
VCI Location Bounds(VCI)
VCI Location Lighting(VCI)
VCI Object(VCI)
VCI Player Spawn Point(VCI)
VCI Player Spawn Point Restriction(VCI)
VCI Spring Bone(VCI)
VCI SubItem(VCI)

ウサギウサギ

2023年6月11日(日)。VCI Player Spawn Point Restriction
Range Of Movement: No Limit, Circle, Rectangle
Limit Radius:
Limit Rect Left:
Limit Rect Right:
Limit Rect Backward:
Limit Rect Forward:
Posture Restriction: No Limit, Sit On
Seat Height: 0

ウサギウサギ

2023年6月11日(日)。Location Lighting
Lightmap Mode: Non Directional, Everything, Combined Directional
Skybox: None(Material)
Light Probe Positions: 0個から。 [{X: 0, Y: 0, Z: 0}]
Light Probe Coefficients: 0個から。Element 一つは、Sh[0]~Sh[26]まで。0値から。