Nintendo LaboのToy-ConガレージVRでの各種制限備忘録

公開:2020-09-14最終更新:2020-09-14

ガレージVRでプログラムを組んでると、特定のノードが特定の個数までしか配置できなくて計画が総崩れ、といったことが割とあるので、ここにまとめておく。ついでに、その他いろんな制限に関してもまとめておく。

※以下、全てNintendo Labo Toy-Con 04: VR Kit内のToy-ConガレージVRでのデータ。他のガレージでは異なる可能性あり

各ノードの配置数の上限

以下の通り。ここにないノードは、少なくとも32個を超えて配置できる。それ以上は調べていないので、48とか64とか96とか128とかで置けなくなるものもあるかもしれない。

Labo配置数上限

註1:IRカメラを使う入力系ノードについては、使用するToy-Conが異なるもの同士は同時に使えない(「IRマーカー」ノードも、IRカメラを使う他のToy-Con用ノードと併用できない)。例えば、「シュノーケルが映ったら 」と「シュノーケルの位置 」は同時に使用できるが、「シュノーケルが映ったら 」と「ゾウの顔が映ったら 」は同時に使用できない。「シュノーケルが映ったら 」と「IRマーカー」も同時に使用できない。

註2:上の表内のほとんどのノードは、上限を超えて配置しようとすると警告ポップアップが出て上限数が示されるが、「BGM」と「コメント」は警告ポップアップに具体的な上限数が明記されていない。そのため、何か条件によって上限数が変化するのかもしれない。

上限数表示あり(「ヒト」ノード)

上限数表示なし(「BGM」ノード)

連結・接続の制限

※ここでは、ノード上下にあるポートを用いる、実体のあるノード同士を物理的に繋げるものを「連結」、ノード左右にあるポートを用いる、ノード間でデータを受け渡しするものを「接続」と呼ぶこととする。

連結

いろいろ頑張って検証してしまったが、ヘルプにちゃんと書いてあった。

接続

直列接続は少なくとも64ノード以上いける。(このぐらいの長さになると、入力端の信号変化が出力端に伝わるまでの遅延が顕著になってくる

並列接続は1ポートにつき最大16本

入力ポート

出力ポート

数値の制限

ラボで扱える数値の範囲について。有効数字3桁程度での粗めの検証。

最大値

およそ1.70e38までは正常に表示される。1.71e38を超えると表示が0.000000..になるが、値としては正常に扱われている。この内部的な値は3.40e38辺りまでで、3.41e38になると0として扱われる。

1.00e38を1.70倍したところ。正常に表示される限界。「出力はんい」の右端を1.71にすると、表示が「0.000000...」になる。

1.00e38を3.40倍したところ。値として正常に扱われる限界。表示自体は「0.000000...」となっているが、値としては3.40e38になっている。「出力はんい」の右端を3.41にすると、表示が「0.000000」になり、値としてもただの0として扱われる。

3.40e38(表示は「0.000000...」)を入力として受け取り100分の1倍すると、3.40e36が出力されるため、入力された値は表示が「0.000000...」でも内部的には3.40e38として扱われていることがわかる。

最小値

最大値と同様に、-1.70e38までは正常に表示され、-1.71e38になると表示が0.00..になり、-3.40e38を下回ると0.00として扱われる。


正の最小値

そもそも小数点以下6桁までしか表示されないが、内部的には1.00e-37 / 8.50(約1.176e-38)までは正常に扱われる。1.00e-37 / 8.51(約1.175e-38)になると0として扱われる。

1.00e-37を8.50分の1倍したところ。「入力はんい」の右端を8.51にすると、表示「0.000000」になり、値としてもただの0として扱われる。

1.00e-37を8.50分の1倍した値を入力として受け取り、1.00e38と乗算すると1.176470が出力されるため、入力された値は約1.176470e-38として扱われていることがわかる。

余談

単精度浮動小数点数の最大値および正の最小値それぞれ

(2−2^−23) × 2^1273.4028235e38

2^-1261.1754944e-38

なので(Wikipedia参照)、ラボの数値は単精度浮動小数点数で管理されてるっぽい(オーバーフロー・アンダーフローはいずれも0に強制

その他

位置

ヘルプにも書かれているが、400m辺りに到達したモノは消滅する。具体的には、X±Y±Z±いずれの方向も、408~409m付近で消滅。

速度

X±Y±Z±いずれの方向も、絶対値は最大100m/s(ただし、無理やり変な風に動かすと一時的に100m/sを超えることもある?)。自由落下も、速度が-100m付近になると加速度がいきなり0になる。スライドれんけつでのノード移動の速度も最大100m/s。

加速度

「動かせるモノ」への入力を-100から100へ直接変化させた際に、最大(おそらく)の100m/s^2が出る。

回転速度

絶対値は最大13.27周/s。ただし、この最大回転速度が出るような「まわせるモノ」への入力は16あたり。

さわったセンサー

普通のモノは、「さわったセンサー」1つにつき最大32個までカウントされる(一瞬33とか出たことがあったけどその後再現できなかった)。

「モノを発射」(1,10,100関わらず)で出現したモノは、「さわったセンサー」1つにつき最大128個までカウントされる(が、わりと頻繁に118とかで止まったりする)。

普通のモノと「モノを発射」で出現したモノとが混ざっている場合、「さわったセンサー」1つにつき、128-[普通のモノの個数]×3 個までカウントされるような感じ(だが、そのようにならないことが割と頻繁ある)。