Slide 1

Slide 1 text

macOSͱ͔Ͱ΋ QuestΛϦϞʔτ͍ͨ͠ΜͩΑ ΞϚνϡΞϦϯάϑΟολʔ @toru_inoue (ג)KISSAKI

Slide 2

Slide 2 text

macOSͱ͔Ͱ΋ QuestΛϦϞʔτ͍ͨ͠ΜͩΑ [J[BJ͞Μͷ͓ख఻͍ @toru_inoue (ג)KISSAKI

Slide 3

Slide 3 text

͕Μ͹Γͨ͘ͳ͍ ֓ཁ 4NBMM͍ͬͯ͏2VFTUΞϓϦΛ࡞͍ͬͯͯɻ 0DVMVT2VFTUͰಈ͘%ϞσϦϯάπʔϧɻ ࠓ·ͩQSJWBUFͳΜ͚ͩͲɻ ͰɺNBDΛ࢖ͬͯ2VFTUΞϓϦΛ࡞͍ͬͯΔͱɺ·͋πʔϧ͕ ଍Γͳ͍ɻओʹ։ൃɺσόοάπʔϧɻ

Slide 4

Slide 4 text

͕Μ͹Γͨ͘ͳ͍ ֓ཁ ਐḿ͢ΔͨΊʹຖճ࣮ػϏϧυ͢Δͷ͸ਓੜͷແବ͗͢Δɻ ϦϞʔτͰૹΓࠐΊΑ͏͕Ϗϧυ͕ΊͲ͍ɻ୤ࣈͰ͸ͳ͍ɻ ͦΜͳΘ͚Ͱ։ൃͨ͠ "OQBO3FNPUFͱ͍͏ϦϞʔτΠϯϓοτπʔϧͷ࿩Λ͢Δɻ IUUQTHJUIVCDPNTBTTFNCMB"OQBO3FNPUF

Slide 5

Slide 5 text

A-npanRemoteͱ͸ Unity Editor΁ͱ͍Ζ͍Ζͳ֎෦πʔϧͷΠϯϓοτΛೖྗ͢Δ΍ͭ ͜ΕΒUP6OJUZ&EJUPS͕Մೳɻ ‣ "3,JU J04࣮ػ  ‣ 0DVMVT2VFTU ‣ 0DVMVT3JGU ‣ )PMPMFOTͱ͔ ΍ͬͨ͜ͱͳ͍ ͨͿΜͰ͖Δ  ‣ "3ܥͱ͔ଞ ·ͩݟ͵Πϯϓοτ΋ରԠՄೳ

Slide 6

Slide 6 text

͜ΕΒUP6OJUZ&EJUPS͕Մೳɻ ‣ "3,JU ‣ 0DVMVT2VFTU ‣ 0DVMVT3JGU ‣ )PMPMFOTͱ͔ ΍ͬͨ͜ͱͳ͍ ͨͿΜͰ͖Δ  ‣ "3ܥͱ͔ଞ ·ͩݟ͵Πϯϓοτ΋ରԠՄೳ A-npanRemoteͱ͸ Unity Editor΁ͱ͍Ζ͍Ζͳ֎෦πʔϧͷΠϯϓοτΛೖྗ͢Δ΍ͭ ͜Ε͕͋Δͱͳʹ͕͍͍ͬͯ ࣮ػϏϧυͳ͠Ͱ ΤσΟλ͚ͩͰΞϓϦ։ൃ͕Ͱ͖ΔΜͩΑͳʂ ΠςϨʔγϣϯͩΜͪʂʂ

Slide 7

Slide 7 text

A-npanRemote ߏ੒ ▸ ࣮ػ → Unity Editor͸WebSocketͰ઀ଓ ▸ ͋ΒΏΔೖྗσʔλ͕EditorʹདྷΔͷͰɺ
 EditorͰੜͷΠϯϓοτΛड͚ͳ͕ΒΞϓϦΛ࡞ ੒Ͱ͖Δ ▸ ࣮ػϏϧυجຊతʹෆཁ Unity Editor Quest ӈखɺࠨखɺ಄ͷ܏͖ etc WS Client → WS Server

Slide 8

Slide 8 text

͜Μͳײ͡ʹϚωΩϯϔουʹஔ͘ͱ ಄ͷ܏͖ͱ͔Ґஔͱ͔ͷτϥοΩϯά৘ใ͕ௐ੔Ͱָ͖ͯɻ ίϯτϩʔϥ΋௻Δͨ͠Γͯ͠ྑ͍ײ͡ͷҐஔʹݻఆָ͕ 2VFTUͰͷ։ൃͷ Α͏͢

Slide 9

Slide 9 text

A-npanRemote ૊ΈࠐΈ طଘͷίʔυΛ΄ͱΜͲ͍͡Βͣʹߦ͚Δɻָ͍͠ͷͰ঺հ͢Δɻ  ࣮ػͰσʔλΛड͚औΔؔ਺ΛQVCMJDʹͯ͠࿐ग़ͤ͞Δ  సૹ͍ͨ͠σʔλΛ4USFBNʹม׵͢ΔܕΛ༻ҙ͢Δ
 ͍͕ͭ͜σʔλͷѹॖͱల։Λࣗಈతʹ΍ͬͯ͘ΕΔ   "@OQBO3FNPUF4FUVQؔ਺Λ࣮ߦ  3&.05&ϑϥάΛ͚࣮ͭͯػϏϧυ ͜ͷͭΛຬͨͤ͹0,ɻ

Slide 10

Slide 10 text

A-npanRemote iOSͷFaceTrackingΛA-npanRemoteରԠͯ͠ΈΑ͏ʂ ૊ΈࠐΈBefore // ී௨ʹإೝࣝ(FaceTracking)Λ։࢝ͤ͞Δ fTrack.StartTracking( () => { // إೝࣝ։࢝ }, (Matrix4x4 facePosAndRot, Dictionary faceBlendShapes, Quaternion cameraRot) => { // إೝࣝͷUpdate } );

Slide 11

Slide 11 text

// ී௨ʹإೝࣝ(FaceTracking)Λ։࢝ͤ͞Δ fTrack.StartTracking( () => { // إೝࣝ։࢝ }, (Matrix4x4 facePosAndRot, Dictionary faceBlendShapes, Quaternion cameraRot) => { // إೝࣝͷUpdate } ); A_npanRemote.Setup, Quaternion, FTPayload>( ipText, ref fTrack.OnTrackingUpdate ); A-npanRemote ૊ΈࠐΈAfter

Slide 12

Slide 12 text

// ී௨ʹإೝࣝ(FaceTracking)Λ։࢝ͤ͞Δ fTrack.StartTracking( () => { // إೝࣝ։࢝ }, (Matrix4x4 facePosAndRot, Dictionary faceBlendShapes, Quaternion cameraRot) => { // إೝࣝͷUpdate } ); A_npanRemote.Setup, Quaternion, FTPayload>( ipText, ref fTrack.OnTrackingUpdate ); A-npanRemote ૊ΈࠐΈAfter ͜Ε͚ͩͰ ࣮ػˠ&EJUPSసૹʂ

Slide 13

Slide 13 text

// ී௨ʹإೝࣝ(FaceTracking)Λ։࢝ͤ͞Δ fTrack.StartTracking( () => { // إೝࣝ։࢝ }, (Matrix4x4 facePosAndRot, Dictionary faceBlendShapes, Quaternion cameraRot) => { // إೝࣝͷUpdate } ); A_npanRemote.Setup, Quaternion, FTPayload>( ipText, ref fTrack.OnTrackingUpdate ); A-npanRemote ૊ΈࠐΈAfter ͜Ε͚ͩͰ ࣮ػˠ&EJUPSసૹʂ ࣮࣭ 1 ߦॻ͍ͯऴΘΓɻͶɺ؆୯Ͱ͠ΐ͏ʁ

Slide 14

Slide 14 text

ARKitͰA_npanRemote͸͜Μͳײ͡ ͱ͍͏ ࣮ԋ(਺ඵ)

Slide 15

Slide 15 text

fTrack.StartTracking( () => { // إೝࣝ։࢝ }, (Matrix4x4 facePosAndRot, … { } ); A_npanRemote.Setup { // إೝࣝ։࢝ }, (Matrix4x4 facePosAndRot, … { } ); A_npanRemote.Setup

Slide 16

Slide 16 text

fTrack.StartTracking( () => { // إೝࣝ։࢝ }, (Matrix4x4 facePosAndRot, … { } ); A_npanRemote.Setup { // إೝࣝ։࢝ }, (Matrix4x4 facePosAndRot, … { } ); A_npanRemote.Setup

Slide 17

Slide 17 text

A-npanRemote ৄࡉ:૊ΈࠐΈ  ࣮ػͰσʔλΛड͚औΔؔ਺ΛQVCMJDʹͯ͠࿐ग़ͤ͞Δ
 
 'BDF5SBDLJOH಺ʹ<إͷVQEBUF͕ݕग़Ͱ͖ͨ࣌ʹ࣮ߦ͞ΕΔ>
 0O6QEBUFͱ͍͏"DUJPO͕͋ͬͯɻ
 
 ͦΕΛQVCMJDʹͯ͠ɺ֎෦͔Βॻ͖׵͑Մೳʹ͢Δɻ

Slide 18

Slide 18 text

A-npanRemote ৄࡉ:૊ΈࠐΈ  ࣮ػͰσʔλΛड͚औΔؔ਺ΛQVCMJDʹͯ͠࿐ग़ͤ͞Δ  సૹ͍ͨ͠σʔλΛ4USFBNʹม׵͢ΔܕΛ༻ҙ͢Δ ✔ Matrix4x4 facePosAndRot, Dictionary faceBlendShapes, Quaternion cameraRot public class FTPayload : IRemotePayload3 { [SerializeField] public Matrix4x4 facePosAndRot; [SerializeField] public string[] keys; [SerializeField] public float[] values; [SerializeField] public Quaternion cameraRot; …

Slide 19

Slide 19 text

Matrix4x4 facePosAndRot, Dictionary faceBlendShapes, Quaternion cameraRot A-npanRemote ৄࡉ:૊ΈࠐΈ  ࣮ػͰσʔλΛड͚औΔؔ਺ΛQVCMJDʹͯ͠࿐ग़ͤ͞Δ  సૹ͍ͨ͠σʔλΛ4USFBNʹม׵͢ΔܕΛ༻ҙ͢Δ ✔ public class FTPayload : IRemotePayload3 { [SerializeField] public Matrix4x4 facePosAndRot; [SerializeField] public string[] keys; [SerializeField] public float[] values; [SerializeField] public Quaternion cameraRot; … ࡾͭͷύϥϝʔλΛ ಛఆܕʹม׵

Slide 20

Slide 20 text

Matrix4x4 facePosAndRot, Dictionary faceBlendShapes, Quaternion cameraRot A-npanRemote ৄࡉ:૊ΈࠐΈ  ࣮ػͰσʔλΛड͚औΔؔ਺ΛQVCMJDʹͯ͠࿐ग़ͤ͞Δ  సૹ͍ͨ͠σʔλΛ4USFBNʹม׵͢ΔܕΛ༻ҙ͢Δ ✔ public class FTPayload : IRemotePayload3 { [SerializeField] public Matrix4x4 facePosAndRot; [SerializeField] public string[] keys; [SerializeField] public float[] values; [SerializeField] public Quaternion cameraRot; … ͜ͷϕʔεܕ͕ࣗಈతʹ৭ʑ΍ͬͯ͘ΕΔɻ ఆٛ͑͢͞Ε͹༏উɻ

Slide 21

Slide 21 text

 ࣮ػͰσʔλΛड͚औΔؔ਺ΛQVCMJDʹͯ͠࿐ग़ͤ͞Δ  సૹ͍ͨ͠σʔλΛ4USFBNʹม׵͢ΔܕΛ༻ҙ͢Δ  "@OQBO3FNPUF4FUVQΛߦ͏ A-npanRemote ৄࡉ:૊ΈࠐΈ ✔ ✔ ipΛೖΕͯSetupɻ 1Ͱpublicʹͨؔ͠਺͕ड͚औΔܕ + 2Ͱ࡞ͬͨܕΛηοτ͠ɺ ؔ਺ࣗମΛrefͰ౉͢ɻ A_npanRemote.Setup, Quaternion, FTPayload>( ipText, ref fTrack.OnTrackingUpdate );

Slide 22

Slide 22 text

 ࣮ػͰσʔλΛड͚औΔؔ਺ΛQVCMJDʹͯ͠࿐ग़ͤ͞Δ  సૹ͍ͨ͠σʔλΛ4USFBNʹม׵͢ΔܕΛ༻ҙ͢Δ  "@OQBO3FNPUF4FUVQΛߦ͏ A-npanRemote ৄࡉ:૊ΈࠐΈ ✔ ✔ ipΛೖΕͯSetupɻ 1Ͱpublicʹͨؔ͠਺͕ड͚औΔܕ + 2Ͱ࡞ͬͨܕΛηοτ͠ɺ ؔ਺ࣗମΛrefͰ౉͢ɻ A_npanRemote.Setup, Quaternion, FTPayload>( ipText, ref fTrack.OnTrackingUpdate );

Slide 23

Slide 23 text

 ࣮ػͰσʔλΛड͚औΔؔ਺ΛQVCMJDʹͯ͠࿐ग़ͤ͞Δ  సૹ͍ͨ͠σʔλΛ4USFBNʹม׵͢ΔܕΛ༻ҙ͢Δ  "@OQBO3FNPUF4FUVQΛߦ͏ A-npanRemote ৄࡉ:૊ΈࠐΈ ✔ ✔ ipΛೖΕͯSetupɻ 1Ͱpublicʹͨؔ͠਺͕ड͚औΔܕ + 2Ͱ࡞ͬͨܕΛηοτ͠ɺ ؔ਺ࣗମΛrefͰ౉͢ɻ A_npanRemote.Setup, Quaternion, FTPayload>( ipText, ref fTrack.OnTrackingUpdate );

Slide 24

Slide 24 text

 ࣮ػͰσʔλΛड͚औΔؔ਺ΛQVCMJDʹͯ͠࿐ग़ͤ͞Δ  సૹ͍ͨ͠σʔλΛ4USFBNʹม׵͢ΔܕΛ༻ҙ͢Δ  "@OQBO3FNPUF4FUVQΛߦ͏  3&.05&4DSJQUJOH%FpOF4ZNCPMΛ͚ͭΔ A-npanRemote ৄࡉ:૊ΈࠐΈ ✔ ✔ ✔ Ҏ্ʂ͜Ε͚ͩͰ ✔

Slide 25

Slide 25 text

fTrack.StartTracking( () => { // إೝࣝ։࢝ }, (Matrix4x4 facePosAndRot, … { } ); A_npanRemote.Setup { // إೝࣝ։࢝ }, (Matrix4x4 facePosAndRot, … { } ); A_npanRemote.Setup

Slide 26

Slide 26 text

A-npanRemote in ZIZAI ZIZAIͷͲ͜Ͱ࢖ͬͯΔͷʁ ▸ Unity iOSͷARKitRemote͕҆ఆੑɺ؆қʹ઀ଓͰ͖ΔతͳҙຯͰ͋Μ·Γʹ΋ ࢖͍ͮΒ͍ͷͰɺARKit͕ΒΈͷ։ൃʹA-npanΛ࢖ͬͯΔɻ ▸ ࠶઀ଓ͠΍͘͢Ϩεϙϯε΋ྑ͘ɺI/OΛࣗ෼ͰσβΠϯͰ͖ΔͷͰָɻ

Slide 27

Slide 27 text

ͦͷଞͷ࣮༻ྫ @tomori_hikage IUUQTUXJUUFSDPNUPNPSJ@IJLBHFTUBUVT ද৘͸"OQBO3FNPUF 'BDF5SBDLJOHXJUI"3,JU  ࢦ͸7PY)BOETΛσʔλάϩʔϒରԠ͢ΔͨΊʹ ͝ʹΐ͝ʹΐ͠·ͨ͠ ͔Θ͍͔Ζʙ