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.
パッケージ導入できた模様。
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以降をグルーピングに使用する。
- 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 の説明は以下。
- 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 が存在する
vci の所有権は出したユーザーのままで移動しない。
subitem の所有権は最後に grab したユーザーに移動する。
クロノスの公式 glTF バリデータページ
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つにだけ反映する、とかやってるのかな。
2023年6月10日(土)。Unity 2022.1.24f1 推奨らしいがダウンロードめんどいので Unity Hub のリストにある 2022.3.1f1 にしてみる🕓。
▼ リンク切れ.
▼ 説明にまだ THE SEED ONLINE が登場する.
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値から。
2023年6月11日(日)。Location Bounds
Center: {x: 0, y: 0, z: 0}
Extents: {x: 0,y:0, z: 0}
隠し機能なため、Room では使用できません。
ちょw