ดูวิธีนําเข้าโมเดล 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
และพารามิเตอร์เนื้อหาให้ตรงกับค่าที่กําหนดเองด้วยตนเอง
- ระบุไฟล์