ทำความเข้าใจตัวแก้ไขพื้นที่ย่อย

อุปกรณ์ XR ที่รองรับ
คำแนะนำนี้จะช่วยคุณสร้างประสบการณ์การใช้งานสำหรับอุปกรณ์ XR ประเภทนี้
ชุดหูฟัง XR
แว่นตา XR แบบใช้สาย

SubspaceModifier คล้ายกับตัวปรับแต่ง Compose สำหรับ Composable ใน Subspace SubspaceModifier ช่วยให้คุณจัดการ Composable ในพื้นที่ 3 มิติได้ ซึ่งจะช่วยให้คุณจัดตำแหน่ง หมุน และเพิ่มลักษณะการทำงานให้กับโหนดเลย์เอาต์ 3 มิติได้

การจัดวาง

โดยค่าเริ่มต้น Subspace จะถูกจำกัดด้วยพื้นที่ที่แนะนำสำหรับการดูแอป ระบบจะใช้ขอบเขตเหล่านี้เมื่อวัดเลย์เอาต์ของคอมโพเนนต์พื้นที่ย่อย ซึ่งคล้ายกับขอบเขตในเลย์เอาต์ Compose 2 มิติ

ขอบเขตการเติม

ตัวแก้ไข fillMaxSize, fillMaxWidth, fillMaxHeight และ fillMaxDepth ทำให้เนื้อหาเติมเต็มขอบเขตขององค์ประกอบหลัก (บางส่วน) การใช้ตัวแก้ไขการเติมจะช่วยให้แอปจัดเลย์เอาต์เนื้อหาที่ไม่ขึ้นอยู่กับลักษณะการแสดงผลของอุปกรณ์ XR

กำหนดขนาดและขนาดที่จำเป็น

ตัวแก้ไข size, width, height และ depth จะประกาศขนาดที่ต้องการของเนื้อหา หากต้องการประกาศขนาดที่แน่นอนของเนื้อหา ให้ใช้ requiredSize, requiredWidth, requiredHeight และ requiredDepth ต้องระบุหน่วยเหล่านี้ใน dp หากต้องการแปลงจากเมตรเป็น dp ให้ใช้ Meter.toDp()

จัดตำแหน่งคอมโพสิเบิล

offset

ตัวแก้ไข offset จะย้าย Composable ในพื้นที่ 3 มิติตามแกน x, y และ z ต้องระบุหน่วยเหล่านี้เป็น dp หากต้องการแปลงจากเมตรเป็น dp ให้ใช้ Meter.toDp()

rotate

ตัวแก้ไข rotate จะหมุน Composable ที่ระบุในพื้นที่ทำงาน คุณสามารถระบุทิศทางและจำนวนการหมุนได้หลายวิธี ดังนี้

  • โดยใช้การหมุนรอบแกน X, Y และ Z ซึ่งระบุการหมุนรอบแกน x, y และ z ตามลำดับ
  • ใช้ axisAngle ซึ่งเป็น Vector3 ที่แสดงแกนของการหมุน และจำนวนองศาที่ควรหมุนรอบแกน
  • โดยใช้ Quaternion ที่แสดงถึงการหมุน

rotateToLookAtUser

ตัวแก้ไข rotateToLookAtUser จะหมุนเนื้อหาอย่างต่อเนื่องเพื่อให้หันเข้าหาผู้ใช้ตลอดเวลา นอกจากนี้ คุณยังใช้ตัวแก้ไขนี้เพื่อให้ได้เอฟเฟกต์ "ป้ายโฆษณา" ซึ่งเนื้อหาจะหมุนเพื่อหันหน้าเข้าหาผู้ใช้บนแกน Y ขณะที่ยังคงตั้งตรงและสอดคล้องกับแรงโน้มถ่วง โดยให้รวมตัวแก้ไข rotateToLookAtUser เข้ากับตัวแก้ไข gravityAligned

ย้ายและปรับขนาด Composable

อนุญาตให้ผู้ใช้ปรับเปลี่ยนตำแหน่งและขนาดของวัตถุในพื้นที่ 3 มิติได้โดยตรง

ย้ายองค์ประกอบ

เมื่อมีตัวแก้ไข movable และเปิดใช้ ระบบจะแสดงตัวควบคุม UI ที่ลากได้ซึ่งช่วยให้ผู้ใช้ย้ายองค์ประกอบในพื้นที่ 3 มิติได้ คุณสามารถใช้ตัวแก้ไข movable กับ Subspace ทั้งหมด, คอมโพเนนต์เลย์เอาต์เชิงพื้นที่ (เช่น SpatialRow และ SpatialColumn) และคอมโพเนนต์แต่ละรายการ (เช่น SpatialPanel และ SpatialGltfModel)

ลักษณะการทำงานที่เฉพาะเจาะจงของการเคลื่อนไหวนี้จะกำหนดโดย movePolicy ที่ระบุไว้ ดังนี้

  • MovePolicy.Default (หรือ MovePolicy.system()): ระบบจะจัดการการเคลื่อนไหวทั้งหมด รวมถึงคำนวณและใช้ท่าทางและขนาดใหม่โดยอัตโนมัติตามข้อมูลที่ผู้ใช้ป้อน
  • MovePolicy.custom(): ระบบจะคำนวณ Pose เป้าหมายตามอินพุต แต่จะไม่นำไปใช้กับองค์ประกอบที่เกี่ยวข้องโดยอัตโนมัติ ซึ่งมีประโยชน์ในการจำกัดการเคลื่อนไหวหรือสร้างการเคลื่อนไหวที่กำหนดเองในแอป
  • MovePolicy.anchor(): ช่วยให้ผู้ใช้สแนปและยึดองค์ประกอบที่เคลื่อนย้ายได้กับระนาบในโลกจริงที่ตรวจพบ

คอมโพสิเบิล Anchor

หากต้องการตรึง Composable ของ Subspace ที่เคลื่อนย้ายได้กับพื้นผิวในชีวิตจริง ให้ส่ง MovePolicy.anchor() ไปยังตัวแก้ไข movable นโยบายนี้ช่วยให้ผู้ใช้สามารถจัดองค์ประกอบ (เช่น SpatialPanel และ SpatialGltfModel) ให้เข้ากับพื้นผิวจริง เช่น โต๊ะ ผนัง หรือพื้น

คุณสามารถกรองระนาบที่ตรวจพบซึ่งองค์ประกอบสามารถยึดติดได้โดยใช้พารามิเตอร์ต่อไปนี้ (หากเว้นว่างไว้ องค์ประกอบจะยึดติดกับระนาบที่ตรวจพบได้)

  • anchorPlaneOrientations: ชุดค่า PlaneOrientation (Horizontal, Vertical หรือ Any)
  • anchorPlaneSemantics: ชุดค่า PlaneSemantic (Wall, Floor, Ceiling, Table หรือ Any)

ปรับขนาดองค์ประกอบ

เมื่อมีตัวแก้ไข resizable() และเปิดใช้ ระบบจะแสดงตัวควบคุม UI ที่อนุญาตให้ผู้ใช้ปรับขนาดองค์ประกอบในพื้นที่ 3 มิติได้ ลักษณะการทำงานที่เฉพาะเจาะจงของการปรับขนาดจะกำหนดโดย resizePolicy ที่ระบุไว้ ดังนี้

  • ResizePolicy.default(): ระบบจะจัดการท่าทางสัมผัสเพื่อปรับขนาดโดยอัตโนมัติและใช้ขนาดใหม่กับเนื้อหา
  • ResizePolicy.custom(): ระบบจะแสดง SpatialResizeEvent และไม่ใช้ผลลัพธ์ของการปรับขนาดกับองค์ประกอบที่เกี่ยวข้องโดยอัตโนมัติ

เปลี่ยนลักษณะที่ปรากฏของ Composable

alpha

ตัวแก้ไข alpha จะตั้งค่าความทึบแสงขององค์ประกอบและองค์ประกอบย่อย โดย 0f หมายถึงโปร่งใสทั้งหมด และ 1.0f หมายถึงทึบแสงทั้งหมด

scale

ตัวแก้ไข scale จะปรับขนาดเนื้อหาของ Composable ตามแกนแนวนอน แนวตั้ง และความลึก

การทดสอบและการช่วยเหลือพิเศษ

semantics

ตัวแก้ไข semantics จะเพิ่มความหมายให้กับโหนดเลย์เอาต์เพื่อใช้ในการทดสอบและการช่วยเหลือพิเศษ ดูความหมายใน Jetpack Compose และ SemanticsModifier

testTag

ตัวแก้ไข testTag เป็นตัวย่อของ SemanticsPropertyReceiver.testTag ซึ่งช่วยให้เฟรมเวิร์กการทดสอบค้นหาองค์ประกอบในการทดสอบได้