Amazon Sumerianで以下のようなColliderとスケールに関連するバグを見つけた。
一応AWSサポートには連絡済で対応される予定(時期未定)らしい。
正常ケース
再現方法
- 以下のコードでメッシュを作成するスクリプトを何かしらのEntitiyにアタッチする。
'use strict';
function setup(args, ctx) {
// Constructing a quad entity
var attributes = [sumerian.MeshData.POSITION, sumerian.MeshData.NORMAL, sumerian.MeshData.TEXCOORD0];
var attributeMap = sumerian.MeshData.defaultMap(attributes);
var vertexCount = 4;
var indexCount = 6;
var meshData = new sumerian.MeshData(attributeMap, vertexCount, indexCount);
meshData.getAttributeBuffer(sumerian.MeshData.POSITION).set([
-1, -1, 0,
-1, 1, 0,
1, 1, 0,
1, -1, 0,
]);
meshData.getAttributeBuffer(sumerian.MeshData.NORMAL).set([
0,0,1, 0,0,1, 0,0,1, 0,0,1,
]);
meshData.getAttributeBuffer(sumerian.MeshData.TEXCOORD0).set([
0,0, 0,1, 1,1, 1,0,
]);
meshData.getIndexBuffer().set([0,3,1, 1,3,2]);
var quadEntity = ctx.world.createEntity(meshData, new sumerian.Material(sumerian.ShaderLib.textured)).addToWorld();
ctx.entity = quadEntity;
const collider = new sumerian.MeshCollider({meshData: meshData});
const colliderComponent = new sumerian.ColliderComponent({collider: collider});
quadEntity.setComponent(colliderComponent);
}
-
Teleporting in VR with Oculus Rift and HTC Vive | Learn Amazon Sumerianの内容を適用してVRモードで作成したEntityに対してポインタをあてる。
- あたった部分にポインタが表示される。
異常ケース
再現方法
- 以下のスクリプトを何かしらのEntitiyにアタッチする。
'use strict';
function setup(args, ctx) {
// Constructing a quad entity
var attributes = [sumerian.MeshData.POSITION, sumerian.MeshData.NORMAL, sumerian.MeshData.TEXCOORD0];
var attributeMap = sumerian.MeshData.defaultMap(attributes);
var vertexCount = 4;
var indexCount = 6;
var meshData = new sumerian.MeshData(attributeMap, vertexCount, indexCount);
meshData.getAttributeBuffer(sumerian.MeshData.POSITION).set([
-1000, -1000, 0, // <= 正常ケースからの変更点:1000倍する
-1000, 1000, 0, // <= 正常ケースからの変更点:1000倍する
1000, 1000, 0, // <= 正常ケースからの変更点:1000倍する
1000, -1000, 0, // <= 正常ケースからの変更点:1000倍する
]);
meshData.getAttributeBuffer(sumerian.MeshData.NORMAL).set([
0,0,1, 0,0,1, 0,0,1, 0,0,1,
]);
meshData.getAttributeBuffer(sumerian.MeshData.TEXCOORD0).set([
0,0, 0,1, 1,1, 1,0,
]);
meshData.getIndexBuffer().set([0,3,1, 1,3,2]);
var quadEntity = ctx.world.createEntity(meshData, new sumerian.Material(sumerian.ShaderLib.textured)).addToWorld();
ctx.entity = quadEntity;
quadEntity.setScale(new sumerian.Vector3(0.001, 0.001, 0.001)); // <= 正常ケースからの変更点:1/1000倍する。
const collider = new sumerian.MeshCollider({meshData: meshData});
const colliderComponent = new sumerian.ColliderComponent({collider: collider});
quadEntity.setComponent(colliderComponent);
}
-
Teleporting in VR with Oculus Rift and HTC Vive | Learn Amazon Sumerianの内容を適用してVRモードで作成したEntityに対してポインタをあてる。
- => ポインタが中央1点に表示される。