ARKitで眼球をオブジェクトとして描画してみる
Metalでテクスチャを持つdaeファイルを描画する
↑これに関連する話。
ARKitのARSCNFaceGeometryで、
そこで、fillMeshをNOにし目の部分を”くり抜いて”、顔メッシュの向こう側に眼球のオブジェクトを置くとそれらしく見えるのか?を試してみた。
ちなみに眼球の位置はARFaceAnchorクラスのrightEyeTransformなどで取得できる。

↑リファレンスによると、取得できるsimd_float4x4型のマトリックスは眼球の中心基準とのこと。顔の中心(ARFaceAnchorのtransform)からの相対位置になる。

↑ということで代わりになる眼球のオブジェクトをBlenderで作成。というかManuelBastioniLABから借りたもの。
↑テスト動画。
なんとなくいけてるように見えるかもしれないが、そういうところだけをアップしていると言った方がいいかも。
くり抜かれた目の部分が実際のとずれるので不自然になることがあり、使えないかなあという印象。唇の時と同じだ。
あと、rightEyeTransform/leftEyeTransform で「寄り目」が正しく取得できず、目が中央に寄らない。
↑これに関連する話。
ARKitのARSCNFaceGeometryで、
{ ARSCNFaceGeometry *arscnFaceGeometry = [ARSCNFaceGeometry faceGeometryWithDevice:device fillMesh:NO]; }ARSCNFaceGeometryオブジェクトを作成する時にfillMeshをNOにすると両目と口の部分のメッシュを描画しない顔になる(今まではfillMeshをYESにして肌などと同じようにiPhoneのフロントカメラ画像を描画していた)。
そこで、fillMeshをNOにし目の部分を”くり抜いて”、顔メッシュの向こう側に眼球のオブジェクトを置くとそれらしく見えるのか?を試してみた。
ちなみに眼球の位置はARFaceAnchorクラスのrightEyeTransformなどで取得できる。

↑リファレンスによると、取得できるsimd_float4x4型のマトリックスは眼球の中心基準とのこと。顔の中心(ARFaceAnchorのtransform)からの相対位置になる。

↑ということで代わりになる眼球のオブジェクトをBlenderで作成。というかManuelBastioniLABから借りたもの。
ARKitで眼球のテスト。描画しない顔メッシュの目のところに半球の眼球オブジェクトを描画。これもやはり精度的に無理があるなあ。もっと精度あるデータを使わせてくれたらいいと思うけどセキュリティ的に制限してるんかなあ。
— Tatsuya (@yt) 2019年2月27日
わかりにくいけど輪廻眼。 pic.twitter.com/fpBQmRjaMX
↑テスト動画。
なんとなくいけてるように見えるかもしれないが、そういうところだけをアップしていると言った方がいいかも。
くり抜かれた目の部分が実際のとずれるので不自然になることがあり、使えないかなあという印象。唇の時と同じだ。
あと、rightEyeTransform/leftEyeTransform で「寄り目」が正しく取得できず、目が中央に寄らない。
スポンサーサイト