นําเข้าและดูตัวอย่างเนื้อหา 3 มิติ

ดูวิธีนําเข้าโมเดล 3 มิติ แปลงเป็นรูปแบบ Sceneform และแสดงตัวอย่างใน Android Studio

นําเข้าเนื้อหา 3 มิติใหม่

Sceneform รองรับชิ้นงาน 3 มิติในรูปแบบต่อไปนี้

  • OBJ
  • glTF (ไม่รองรับภาพเคลื่อนไหว)
  • FBX มีหรือไม่มีภาพเคลื่อนไหว

ทําตามขั้นตอนต่อไปนี้เพื่อนําเข้าเนื้อหา 3 มิติใหม่

  1. ยืนยันว่าโฟลเดอร์ app ของโปรเจ็กต์มีโฟลเดอร์ sampledata

    ในการสร้างโฟลเดอร์ ให้คลิกขวาที่โฟลเดอร์ app ในหน้าต่าง Project แล้วเลือก New > Sample Data Directory

    โฟลเดอร์ sampledata เป็นส่วนหนึ่งของโปรเจ็กต์ Android Studio แต่เนื้อหาในโฟลเดอร์จะไม่รวมอยู่ใน APK

  2. คัดลอกไฟล์เนื้อหาโมเดล 3 มิติ (*.obj, *.fbx หรือ *.gltf) และทรัพยากร Dependency ทั้งหมด (*.mtl, *.bin, *.png, *.jpg ฯลฯ) ลงในโฟลเดอร์ sampledata

    อย่าคัดลอกไฟล์ต้นฉบับเหล่านี้ไปยังโฟลเดอร์ assets หรือ res ของโปรเจ็กต์ เนื่องจากจะทําให้ไฟล์ดังกล่าวรวมอยู่ใน APK โดยไม่จําเป็น

  3. คลิกขวาที่ชิ้นงานแหล่งที่มาของโมเดล 3 มิติ แล้วเลือกนําเข้าเนื้อหา Sceneform เพื่อเริ่มกระบวนการนําเข้า

    ค่าเหล่านี้ใช้โดยรายการ sceneform.asset() ใน app's build.gradle และกําหนดตําแหน่งที่จะสร้างไฟล์ *.sfa และ *.sfb ในโปรเจ็กต์

    หากนําเข้าโมเดลเป็นครั้งแรก ให้ใช้ค่าเริ่มต้น

    ช่อง คำอธิบาย
    เส้นทางชิ้นงานต้นทาง ชื่อไฟล์ของเนื้อหาโมเดล OBJ, FBX หรือ glTF 3D ที่จะนําเข้า
    เส้นทาง Material default บอกให้ Sceneform' ใช้เนื้อหาเริ่มต้นในตัวหรือเส้นทางไปยังไฟล์ เนื้อหาที่กําหนดเอง *.mat
    เส้นทางเอาต์พุต.sfa ใช้ค่าเริ่มต้นหรือระบุเส้นทางอื่นภายใต้โฟลเดอร์ sampledata

    ไฟล์ .sfa จะเกิดขึ้นหากไฟล์ขาดหายไป คุณแก้ไขเพื่อควบคุมในบางด้านของกระบวนการนําเข้าได้

    วิธีนี้จะช่วยให้ *.sfa ไม่ได้รวมอยู่ใน APK ของคุณโดยไม่จําเป็นต้องใช้

    เส้นทางเอาต์พุต.sfb โดยค่าเริ่มต้นจะใช้โฟลเดอร์ src/main/assets/ ซึ่งจะช่วยให้ใช้ชื่อไฟล์ที่กําหนดเองได้

    หากชื่อไฟล์ (ไม่มีนามสกุลไฟล์) เป็นตัวระบุทรัพยากรที่ถูกต้อง (เช่น R.raw.filename) คุณจะใช้โฟลเดอร์ src/main/res/raw/ แทนได้หากต้องการ

    ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้โฟลเดอร์ assets/ และ res/ ในแอปได้จากภาพรวมทรัพยากรของแอปของ Android

    ไฟล์ภาพเคลื่อนไหว

    หากนําเข้าไฟล์ภาพเคลื่อนไหว *.fbx ไฟล์ ให้คลิกเครื่องหมายบวก (+) แล้วเพิ่มไฟล์ที่เหลือทีละรายการ

  4. คลิกเสร็จสิ้นเพื่อเริ่มกระบวนการนําเข้า

ในการนําเข้าเนื้อหา ปลั๊กอินจะทําดังต่อไปนี้

  1. เพิ่มปลั๊กอิน Sceneform gradle ลงในproject's build.gradleหากมี &&339:

    dependencies {
        …
        classpath 'com.google.ar.sceneform:plugin:1.15.0'
    }
    
  2. อัปเดตไฟล์ แอป's build.gradle ให้รวมบรรทัด apply plugin และรายการ sceneform.asset() สําหรับเนื้อหาที่นําเข้าใหม่:

    apply plugin: 'com.google.ar.sceneform.plugin'
    
    sceneform.asset('sampledata/models/andy.obj', // 'Source Asset Path' specified during import.
            'default',                            // 'Material Path' specified during import.
            'sampledata/models/andy.sfa',         // '.sfa Output Path' specified during import.
            'src/main/res/raw/andy')              // '.sfb Output Path' specified during import.
    

    รายการใหม่เหล่านี้ในแอป build.gradle จะสร้างงานแบบ Gradle 2 รายการ ได้แก่

    • createAsset-<asset-name> จะสร้างไฟล์คําจํากัดความเนื้อหา Sceneform (*.sfa) หากยังไม่มีไฟล์ดังกล่าว

      งานนี้จะไม่เขียนทับไฟล์ *.sfa ที่มีอยู่ ซึ่งหมายความว่าการเปลี่ยนแปลงใดๆ ที่คุณทําในไฟล์ SFA หลังจากที่นําเข้าจะไม่ถูกเขียนทับ #39;

      ไฟล์ *.sfa คือไฟล์ข้อความที่มีคําอธิบายการตั้งค่าการนําเข้าเนื้อหาที่สมบูรณ์และมนุษย์อ่านเข้าใจได้ ซึ่งอ้างอิงถึงโมเดลและพื้นผิวในชิ้นงานแหล่งที่มาของคุณ และยังกําหนดวัสดุโดยการจัดหาพารามิเตอร์วัสดุสําหรับวัสดุที่ใช้จริงของ Sceneform&#39

    • compileAsset-<asset-name> คอมไพล์ไฟล์ *.sfa ให้เป็นไฟล์ไบนารีของโหมด Sceneform (*.sfb)

      ไฟล์ *.sfb นี้มีอยู่ใน APK ของแอปและจะโหลดในรันไทม์เพื่อสร้างการแสดงผล

    ดูข้อมูลเพิ่มเติมได้ที่ข้อมูลอ้างอิงของปลั๊กอิน Sceneform Gradle

  3. เปิด *.sfa ในหน้าต่างข้อความและ *.sfb ในหน้าต่างผู้ดู

อัปเดตเนื้อหา 3 มิติที่นําเข้าก่อนหน้านี้

เมื่อคุณอัปเดตไฟล์เนื้อหาต้นทางของ OBJ, FBX หรือ glTF ที่นําเข้าก่อนหน้านี้ (*.obj, *.fbx หรือ *.gltf) รายการ sceneform.asset() ที่เกี่ยวข้องในแอป#build.gradle จะทําให้ปลั๊กอินสร้างไฟล์ *.sfb ที่อัปเดตโดยอัตโนมัติโดยอิงตามพารามิเตอร์ *.sfa ในปัจจุบัน

หากต้องการทําซ้ําพารามิเตอร์สําหรับเนื้อหาที่นําเข้าแล้ว ให้ทําดังนี้

  • แก้ไขไฟล์ข้อความ *.sfa โดยใช้ข้อมูลอ้างอิงของรูปแบบไฟล์ SFA เป็นแนวทาง
  • บันทึกการเปลี่ยนแปลง ซึ่งจะทําให้เนื้อหาได้รับการคอมไพล์อีกครั้งและอัปเดตไฟล์ *.sfb
  • ดูตัวอย่างชิ้นงานที่อัปเดตโดยดับเบิลคลิกที่ไฟล์ *.sfb เพื่อเปิดหน้าต่างผู้ดูชิ้นงาน

หากคุณกําลังอัปเดตเนื้อหาที่นําเข้าก่อนหน้านี้ที่มีข้อมูลภาพเคลื่อนไหว ให้นําเข้าไฟล์ *.fbx ที่อัปเดตแต่ละไฟล์ทีละรายการโดยใช้เครื่องหมายบวก (+) ในส่วนไฟล์ภาพเคลื่อนไหวของกล่องโต้ตอบการนําเข้า

คําจํากัดความของชิ้นงาน Gradle

กระบวนการนําเข้าจะเพิ่มไฟล์ภาพเคลื่อนไหว *.fbx ในตอนท้ายของไฟล์ build.gradle

sceneform.asset('sampledata/models/andy_dance.fbx',
'default',
'sampledata/models/andy_dance.sfa',
'src/main/res/raw/andy_dance',
['sampledata/models/andy_wave_r.fbx',
'sampledata/models/andy_wave_l.fbx'])

สร้างการแสดงผลได้

เมื่อคอมไพล์เนื้อหาในรูปแบบ *.sfb แล้ว คุณจะสร้าง ModelRenderable และแนบไปกับโหนดในฉากได้ดังนี้

ModelRenderable.builder()
    // To load as an asset from the 'assets' folder ('src/main/assets/andy.sfb'):
    .setSource(this, Uri.parse("andy.sfb"))

    // Instead, load as a resource from the 'res/raw' folder ('src/main/res/raw/andy.sfb'):
    //.setSource(this, R.raw.andy)

    .build()
    .thenAccept(renderable -> andyRenderable = renderable)
    .exceptionally(
        throwable -> {
          Log.e(TAG, "Unable to load Renderable.", throwable);
          return null;
    });

การใช้สื่อที่กําหนดเอง

Sceneform's เนื้อหาเริ่มต้น ช่วยให้นักพัฒนาซอฟต์แวร์ได้รับผลลัพธ์ที่สวยงาม ง่ายขึ้น คุณยังใช้เนื้อหาที่กําหนดเองเพื่อปรับแต่งรูปลักษณ์ของเนื้อหาแบบเจาะลึกได้

หากต้องการกําหนดเนื้อหาที่กําหนดเองให้กับเนื้อหา ให้ทําดังนี้

  1. สร้างไฟล์การกําหนดวัสดุที่กําหนดเอง (*.mat) โดยใช้ [ข้อมูลอ้างอิงเนื้อหาที่กําหนดเอง](/stageform/develop/custom-material เป็นแนวทาง

  2. ใช้เนื้อหาที่กําหนดเองกับเนื้อหา

    เมื่อนําเข้าเนื้อหาใหม่ ให้ทําดังนี้

    หากต้องการอัปเดตชิ้นงานที่นําเข้าก่อนหน้านี้ ให้ทําดังนี้

    • หากไม่ได้ปรับแต่งเนื้อหา *.sfa ให้ลบไฟล์ *.sfa และ *.sfb ที่มีอยู่ และรายการ sceneform.asset() ในแอป build.gradle แล้วนําเข้าเนื้อหาอีกครั้ง วิธีนี้จะช่วยให้มั่นใจได้ว่าแอตทริบิวต์ *.sfa และพารามิเตอร์เนื้อหาที่สร้างขึ้นใหม่จะตรงกับแอตทริบิวต์ที่เนื้อหาที่กําหนดเองรองรับ

    • หากต้องการเก็บการปรับแต่ง *.sfa ใดๆ ที่คุณทําไว้ ให้เปิดไฟล์ *.sfa และเปลี่ยนแอตทริบิวต์ source เป็นเส้นทางไปยังไฟล์เนื้อหา *.mat ที่กําหนดเอง จากนั้นปรับแอตทริบิวต์ *.sfa และพารามิเตอร์เนื้อหาให้ตรงกับค่าที่กําหนดเองด้วยตนเอง