Android DeveloperAugmented RealityGoogle DevelopersUnity 3D

มาลองใช้งาน ARCore ของ Google บน Android Studio และ Unity 3D กัน

สำหรับสายพัฒนา Augmented Reality ฝั่ง iOS นั้นก็ได้มี ARKit มาสักสักใหญ่ฝั่ง Android เองทาง Google ก็ออกเจ้า ARCore มาให้ลองใช้กับ Android Studio และ Unity 3D เหมือนกัน

อย่างที่บอกว่าหลังจาก Apple ได้ออก ARKit มาสักพัก https://developer.apple.com/videos/play/wwdc2017/602/

ทางวิทยาลัยครีเอทีฟดีไซน์ แอนด์ เอ็นเตอร์เทนเมนต์เทคโนโลยี หรือ ANT DPU ที่ผมสังกัดอยู่ก็ไม่นิ่งเฉยมีการทดสอบและนำสอนในโครงการ True App Builder ของ True Incube ไปแล้ว โดยผู้สอนคือ คณบดี ของวิทยาลัย ผศ.ดร. วรสิทธิ์ ชูชัยวัฒนา (Embeded จาก Facebook Post ของคณบดี)

ฝั่ง Android เองก็ใช้ Third Party มาเสียเยอะ จนกระทั่ง Google ออกเจ้า ARcore มานำเสนอ

แล้วตอนนี้นักพัฒนาก็สามารถหยิบมาพัฒนาได้แล้ว! https://developers.google.com/ar โดยแพลตฟอร์มที่รองรับก็ตามภาพประกอบด้านล่าง:

ในบทความนี้เลยจะมา Review ชิมลางการพัฒนาเจ้า ARCore ของ Google เสียหน่อยทั้งบน Android Studio และบนเครื่องประมวลผลเกมยอดฮิตอย่างเจ้า Unity 3D ทั้ง 2 ตัวเลย

มาเริ่มที่ Android Studio กันก่อน วิธีการแสนง่ายคือทาง Google ARCore มี git ให้เรา clone ไปใช้ได้เลยโดย Include เจ้า SDK ไว้อยู่แล้ว ขั้นตอนก็คือเปิด CMD หรือ Terminal แล้วพิมพ์

git clone https://github.com/google-ar/arcore-android-sdk.git

สาธิตวิธีการก็แบบนี้ครับ (ใครไม่รู้ว่า git ทำงานยังไงไปศึกษามา เพราะมันบาปหนามาก!!!)

ทำการตั้งค่ามือถือ Android ของเราให้พร้อมโดยการดาวน์โหลดและติดตั้ง ARCore Service แน่นอนว่าอุปกรณ์ที่รองรับคือ

  • Google Pixel and Pixel XL
  • Samsung Galaxy S8 (SM-G950U, SM-G950N, SM-G950F, SM-G950FD, SM-G950W, SM-G950U1)

หลังจากนั้นให้เราเปิด Android Studio ขึ้นมาเลือก Open an existing Android Studio project แล้วชี้ไปยัง Folder ที่เราทำการ Clone git ไว้ตัวอย่างของผมคือ ARCore

รอจนกว่าตัว Android Studio Project จะพร้อมใช้งาน เมื่อพร้อมให้เราลอง Run แอพพลิเคชันของเราผ่าน USB Debugging ก่อนเลย เพื่อทดสอบ ARCore ส่วนของโมเดลทั้งหมดจะอยู่ที่ folder ที่ชื่อว่า assets/models

คำสั่งในการเรียก Assets มาแสดงนั้นจะใช้เมธอด onSurfaceCreate() แทน และจะอัพเด็ตตำแหน่งการแสดงผ่าน onSurfaceChanged()

@Override
  public void onSurfaceCreated(GL10 gl, EGLConfig config) {
    GLES20.glClearColor(0.1f, 0.1f, 0.1f, 1.0f);

    // Prepare the rendering objects. This involves reading shaders, so may throw an IOException.
    try {
      // Create the texture and pass it to ARCore session to be filled during update().
      backgroundRenderer.createOnGlThread(/*context=*/ this);
      planeRenderer.createOnGlThread(/*context=*/ this, "models/trigrid.png");
      pointCloudRenderer.createOnGlThread(/*context=*/ this);

      virtualObject.createOnGlThread(/*context=*/ this, "models/andy.obj", "models/andy.png");
      virtualObject.setMaterialProperties(0.0f, 2.0f, 0.5f, 6.0f);

      virtualObjectShadow.createOnGlThread(
          /*context=*/ this, "models/andy_shadow.obj", "models/andy_shadow.png");
      virtualObjectShadow.setBlendMode(BlendMode.Shadow);
      virtualObjectShadow.setMaterialProperties(1.0f, 0.0f, 0.0f, 1.0f);

    } catch (IOException e) {
      Log.e(TAG, "Failed to read an asset file", e);
    }
  }

ลองทดสอบดูสักหน่อย อันนี้ตัวอย่างจากเว็บไซต์ก่อนชิมลาง

Credit: AndroidPub

หากสังเกตจะเห็นว่า ไฟล์แบบจำลอง 3 มิติหรือ Model 3D นั้นจะมาพร้อม Texture อยู่ใน Folder Assets ของ Android Studio: (ตัวอย่างไฟล์นามสกุล .obj)

ทีนี้ลอง Build ลงเครื่องมือถือส่วนตัวบ้างหน่อย ถ้าแสงน้อยก็จะจับลำบากไปสักนิด:

ทดสอบจากเครื่องตัวเอง สักหน่อย หา โมเดลอื่นมาใส่ให้

มาดูส่วนของ Unity 3D สิว่ามันแตกต่างกับ Vuforia SDK แค่ไหน? อ่าน Instruction ของมันก่อนนะครับ Google บอกว่า Unity นั้นต้องเป็นเวอร์ชัน 2.2017 Beta ขึ้นไป นั่นหมายความว่าต้องไปติดตั้ง Unity ตัว Beta มาครับ:

https://unity3d.com/unity/beta

ผมเปิด Unity Project ขึ้นมาครับ

ทำการดาวน์โหลด Unity Package ของ ARCore ที่ SDK Preview for Unity มาใช้งาน โดยการ Import Custom Asset จาก Unity

ทั้งหมดคือ Package ที่ทำการแตกออกมาจาก Unity Package กด Import ให้เรียบร้อย

เปิด Scene ของ Unity ที่ชื่อว่า HelloAR ขึ้นมา

สามารถเลือก Canvas->Example Controller ใน Hierachy ไปที่ Inspector ดูตรง Andy Android Prefab คลิกเพื่อแก้ไข โมเดล Andy ด้วยเต่าทะเล Squirt ของเราแทน

ใส่ โมเดลลงไป

ไปที่ Build Setting ทำการ Build แอพพลิเคชันของเราเป็นแพลตฟอร์ม Android ทำการเสียบสาย USB แล้ว Build and Run ให้เรียบร้อย

ไปที่ Build Setting เลือก Player Setting เปิด XR ขึ้นมาเลือก ARcore Feature ซะ

รอการ Build ให้เรียบร้อย:

มาดูผลลัพธ์ของเรากันหน่อยดีกว่าว่า ถ้ารันผ่าน Unity เป็นยังไง:

ก็คิดว่า ARCore น่าจะเป็นอะไรที่น่าจะเป็นการเล่น Content สำหรับการตลาดมากขึ้นในอนาคตสำหรับสาย Android นะครับส่วน iOS ก็ ARKit ซึ่งตอนนี้ก็กลายเป็น ของใกล้ตัวกันไปแล้วกับ Augmented Reality เอาไปศึกษากันต่อเองเลยล่ะกันนะครับ

Asst. Prof. Banyapon Poolsawas

อาจารย์ประจำสาขาวิชาการออกแบบเชิงโต้ตอบ และการพัฒนาเกม วิทยาลัยครีเอทีฟดีไซน์ & เอ็นเตอร์เทนเมนต์เทคโนโลยี มหาวิทยาลัยธุรกิจบัณฑิตย์ ผู้ก่อตั้ง บริษัท Daydev Co., Ltd, (เดย์เดฟ จำกัด)

Related Articles

Back to top button

Adblock Detected

เราตรวจพบว่าคุณใช้ Adblock บนบราวเซอร์ของคุณ,กรุณาปิดระบบ Adblock ก่อนเข้าอ่าน Content ของเรานะครับ, ถือว่าช่วยเหลือกัน