この文書の現在のバージョンと選択したバージョンの差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
vci:component:sdk:subitem:owned [2019/05/28 14:56] oinari ↷ vci:subitem:owned から vci:sdk:subitem:owned へページを移動しました。 |
vci:component:sdk:subitem:owned [2022/09/05 18:02] pastatto ↷ 移動操作に合わせてリンクを書き換えました。 |
||
---|---|---|---|
ライン 1: | ライン 1: | ||
- | ====== VCIアイテムとSubItemについて ====== | + | ====== SubItemの所有権と同期処理の関係 ====== |
- | SubItem・同期・所有権の関係性について説明します。\\ | + | SubItem・同期・所有権の関係性について説明します。 |
- | ---- | + | [[vci:script:reference:eventfunction:ownership]]も参照してください。 |
===== 概略 ===== | ===== 概略 ===== | ||
- | VCIのアイテムは**複数プレイヤーでネットワーク同期**する必要があります。\\ | + | * **SubItemの位置・回転・拡大/縮小**は、サーバを介して**ネットワーク同期**が行われる |
- | ネットワーク同期はサーバを介して行われます。\\ | + | * ここでの「同期」とは、同じ値になるよう強制すること |
- | ※ここでの「同期」とは、位置・回転・拡大縮小が同じになるようにすることです。 | + | * 位置・回転・拡大/縮小以外の値は**同期されない** |
- | + | * SubItemの子孫のオブジェクトの値は**同期されない** | |
- | VCIでは、**SubItem毎に同期**します。\\ | + | * SubItemには**所有者 (VCIまたはSubItemの所有権を持つ者)** と**非所有者**の関係がある |
- | SubItemは、0個(背景等の動かないもの)、1個(普通のアイテム)、2個以上(複数の物体がセットになっている)ができます。 | + | * 所有者側では**物理挙動やUpdate関数などで動作した結果の情報が送信**される |
- | + | * 非所有者側では**その結果を受信して再生**する | |
- | また、VCIアイテムには**親(VCIまたはSubItemの所有権を持つ者。所有者)と子の関係**があります。\\ | + | * **SubItemをつかむと所有権が移る** |
- | 親側では**物理挙動やUpdate関数などで動作した結果の情報が送信**され、\\ | + | |
- | 子側では**その結果を受信して再生**しています。(子は親の過程を知らず、結果だけを受信)\\ | + | |
- | VCIアイテムを握ると所有権が移ります。 | + | |
その他、以下のような特徴があります。 | その他、以下のような特徴があります。 | ||
- | - 同期は毎フレームではなく、間引かれて実行される | + | * 同期は毎フレームではなく、間引かれて実行される |
- | - 位置・回転・拡大縮小はそのまま送信するとカクカクするため、バーチャルキャストが動きを補間する\\ | + | * 位置・回転・拡大/縮小はそのまま送信するとカクカクするため、バーチャルキャストが動きを補間する |
- | (細かい動きや機敏な動きは同期した時に相手側で見た目が変になる場合がある) | + | * 細かい動きや機敏な動きは同期した時に相手側で見た目が変になる場合がある |
- | - 同期には遅延があるため、完全に同じ見た目・同じ動きにはならず、若干のズレが発生する場合がある | + | * 同期には遅延があるため、完全に同じ見た目・同じ動きにはならず、若干のズレが発生する場合がある |
- | {{ :モデル作成:vci作成:about_subitem_1.png?nolink&648 |}} | + | {{ vci:sdk:about_subitem_1.png?nolink&648 |}} |
===== 所有権 ===== | ===== 所有権 ===== | ||
- | **SubItemの位置・回転・拡大縮小を変更できる権利**です。\\ | + | **SubItemの位置・回転・拡大/縮小を変更できる権利**です。\\ |
- | **SubItemごとにスタジオで一人だけが親**になれます。 同期は、**親から子への一方通行**になされます。\\ | + | **SubItemごとにスタジオで一人だけが所有者**になれます。同期は、**所有者から非所有者への一方通行**になされます。\\ |
- | ※所有権は、ネットワーク同期の所有権でauthorのことではありません | + | ※所有権は、ネットワーク同期の所有権であり、authorのことではありません |
- | {{ :モデル作成:vci作成:about_subitem_2.png?nolink&648 |}} | + | {{ vci:sdk:about_subitem_2.png?nolink&648 |}} |
==== 所有権を得る ==== | ==== 所有権を得る ==== | ||
- | バーチャルキャストでは、誰でもアイテムを掴む(Grab)ことができて、アイテムを掴むと所有権が移ります。 | + | バーチャルキャストでは、誰でもアイテムをつかむ(Grab)ことができて、アイテムをつかむと所有権が移ります。 |
- | {{ :モデル作成:vci作成:about_subitem_3.png?nolink&648 |}} | + | {{ vci:sdk:about_subitem_3.png?nolink&648 |}} |
==== VCIの所有権とSubItemの所有権 ==== | ==== VCIの所有権とSubItemの所有権 ==== | ||
SubItemの所有権に加えて、VCIの所有権があります。\\ | SubItemの所有権に加えて、VCIの所有権があります。\\ | ||
- | VCIの所有権は、アイテムをシーンに呼び出したユーザーが持っていて、Grabで移動することはありません。 | + | VCIの所有権は、VCIの所有者 (VCIをシーンに呼び出したユーザー) が持っていて、Grabで移動することはありません。\\ |
+ | [[vci:script:reference:eventfunction]] の一つ、update関数は、VCIの所有者だけで呼ばれます。\\ | ||
- | ==== Update関数と所有権 ==== | + | このことにより例えば、update関数内で位置・回転・拡大/縮小を変更しても、所有権が無いSubItemの位置・回転・拡大/縮小は行えません。\\ |
+ | (SubItemの所有権のあるユーザーに位置・回転・拡大/縮小の状態を上書きされる)\\ | ||
- | VCIスクリプトのUpdate関数はVCIアイテムだけで呼ばれます。\\ | + | {{ vci:sdk:about_subitem_4.png?nolink&648 |}} |
- | このことより例えば、VCIアイテム内のSubItemの所有権が無い状態で、Update関数内で位置・回転・拡大縮小を変更しても、所有権が無いSubItemの位置・回転・拡大縮小は変更されません。\\ | + | |
- | (所有権のあるプレイヤーに位置・回転・拡大縮小の状態を上書きされる)\\ | + | |
- | ※所有権のあるプレイヤーのみが実行されるようにするには SubItem.BindUpdate を使用します | + | |
- | + | ||
- | {{ :モデル作成:vci作成:about_subitem_4.png?nolink&648 |}} | + | |
===== 物理挙動 ===== | ===== 物理挙動 ===== | ||
- | + | 所有権と物理は密接な関係があり、物理が有効なSubItemは、所有権のあるアイテムだけ物理挙動します (所有権のないSubItemは Kinematic = true になる)。\\ | |
- | 所有権と物理は密接な関係があり、物理アイテムは**所有権のあるアイテムだけ物理挙動します**。\\ | + | |
**所有権の無いアイテムは、所有者の結果をコピー**します。\\ | **所有権の無いアイテムは、所有者の結果をコピー**します。\\ | ||
所有者の結果は**間引きして送信される**ので、間が補完されて奇妙な動きをする場合があります。\\ | 所有者の結果は**間引きして送信される**ので、間が補完されて奇妙な動きをする場合があります。\\ | ||
高速になるほど顕著になります。 | 高速になるほど顕著になります。 | ||
- | {{ :モデル作成:vci作成:about_subitem_5.png?nolink&648 |}} | + | {{ vci:sdk:about_subitem_5.png?nolink&648 |}} |
- | {{ :モデル作成:vci作成:about_subitem_6.png?nolink&648 |}} | + | {{ vci:sdk:about_subitem_6.png?nolink&648 |}} |