ดูวิธีนําเข้าโมเดล 3 มิติ แปลงเป็นรูปแบบ Sceneform และแสดงตัวอย่างใน Android Studio
นําเข้าเนื้อหา 3 มิติใหม่
Sceneform รองรับชิ้นงาน 3 มิติในรูปแบบต่อไปนี้
- OBJ
- glTF (ไม่รองรับภาพเคลื่อนไหว)
- FBX มีหรือไม่มีภาพเคลื่อนไหว
ทําตามขั้นตอนต่อไปนี้เพื่อนําเข้าเนื้อหา 3 มิติใหม่
ยืนยันว่าโฟลเดอร์
appของโปรเจ็กต์มีโฟลเดอร์sampledataในการสร้างโฟลเดอร์ ให้คลิกขวาที่โฟลเดอร์
appในหน้าต่าง Project แล้วเลือก New > Sample Data Directoryโฟลเดอร์
sampledataเป็นส่วนหนึ่งของโปรเจ็กต์ Android Studio แต่เนื้อหาในโฟลเดอร์จะไม่รวมอยู่ใน APKคัดลอกไฟล์เนื้อหาโมเดล 3 มิติ (
*.obj,*.fbxหรือ*.gltf) และทรัพยากร Dependency ทั้งหมด (*.mtl,*.bin,*.png,*.jpgฯลฯ) ลงในโฟลเดอร์sampledataอย่าคัดลอกไฟล์ต้นฉบับเหล่านี้ไปยังโฟลเดอร์
assetsหรือresของโปรเจ็กต์ เนื่องจากจะทําให้ไฟล์ดังกล่าวรวมอยู่ใน APK โดยไม่จําเป็นคลิกขวาที่ชิ้นงานแหล่งที่มาของโมเดล 3 มิติ แล้วเลือกนําเข้าเนื้อหา Sceneform เพื่อเริ่มกระบวนการนําเข้า
ค่าเหล่านี้ใช้โดยรายการ
sceneform.asset()ใน app'sbuild.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ไฟล์ ให้คลิกเครื่องหมายบวก (+) แล้วเพิ่มไฟล์ที่เหลือทีละรายการคลิกเสร็จสิ้นเพื่อเริ่มกระบวนการนําเข้า
ในการนําเข้าเนื้อหา ปลั๊กอินจะทําดังต่อไปนี้
เพิ่มปลั๊กอิน Sceneform gradle ลงในproject's
build.gradleหากมี &&339:dependencies { … classpath 'com.google.ar.sceneform:plugin:1.15.0' }อัปเดตไฟล์ แอป'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'compileAsset-<asset-name>คอมไพล์ไฟล์*.sfaให้เป็นไฟล์ไบนารีของโหมด Sceneform (*.sfb)ไฟล์
*.sfbนี้มีอยู่ใน APK ของแอปและจะโหลดในรันไทม์เพื่อสร้างการแสดงผล
ดูข้อมูลเพิ่มเติมได้ที่ข้อมูลอ้างอิงของปลั๊กอิน Sceneform Gradle
เปิด
*.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 เนื้อหาเริ่มต้น ช่วยให้นักพัฒนาซอฟต์แวร์ได้รับผลลัพธ์ที่สวยงาม ง่ายขึ้น คุณยังใช้เนื้อหาที่กําหนดเองเพื่อปรับแต่งรูปลักษณ์ของเนื้อหาแบบเจาะลึกได้
หากต้องการกําหนดเนื้อหาที่กําหนดเองให้กับเนื้อหา ให้ทําดังนี้
สร้างไฟล์การกําหนดวัสดุที่กําหนดเอง (
*.mat) โดยใช้ [ข้อมูลอ้างอิงเนื้อหาที่กําหนดเอง](/stageform/develop/custom-material เป็นแนวทางใช้เนื้อหาที่กําหนดเองกับเนื้อหา
เมื่อนําเข้าเนื้อหาใหม่ ให้ทําดังนี้
- ระบุไฟล์
*.matของเนื้อหาที่กําหนดเองระหว่างกระบวนการนําเข้า
หากต้องการอัปเดตชิ้นงานที่นําเข้าก่อนหน้านี้ ให้ทําดังนี้
หากไม่ได้ปรับแต่งเนื้อหา
*.sfaให้ลบไฟล์*.sfaและ*.sfbที่มีอยู่ และรายการsceneform.asset()ในแอปbuild.gradleแล้วนําเข้าเนื้อหาอีกครั้ง วิธีนี้จะช่วยให้มั่นใจได้ว่าแอตทริบิวต์*.sfaและพารามิเตอร์เนื้อหาที่สร้างขึ้นใหม่จะตรงกับแอตทริบิวต์ที่เนื้อหาที่กําหนดเองรองรับหากต้องการเก็บการปรับแต่ง
*.sfaใดๆ ที่คุณทําไว้ ให้เปิดไฟล์*.sfaและเปลี่ยนแอตทริบิวต์sourceเป็นเส้นทางไปยังไฟล์เนื้อหา*.matที่กําหนดเอง จากนั้นปรับแอตทริบิวต์*.sfaและพารามิเตอร์เนื้อหาให้ตรงกับค่าที่กําหนดเองด้วยตนเอง
- ระบุไฟล์

