Skip to main content

Virtual Tileset

Virtual Tileset คือ ชุดข้อมูลที่เกิดจากการรวมข้อมูล Asset หลายรายการเข้าด้วยกัน โดยมีโครงสร้างข้อมูลเป็นไปตามมาตรฐาน GeoVolumes

คุณสมบัติของ Virtual Tileset

  • เป็นผลลัพธ์ที่ได้จากการรวมข้อมูล Asset หลายชุดเข้าด้วยกัน
  • โครงสร้างข้อมูลที่ได้จาก API จะแตกต่างจากโครงสร้างของ Asset ต้นฉบับ
  • ผลลัพธ์ที่ได้จะมีรายละเอียดของ Asset ที่ถูกนำมารวมไว้อยู่ภายใน
tileset.json

tileset.json คือ ไฟล์ที่ใช้ในการจัดระเบียบและกำหนดโครงสร้างการจัดเก็บ 3D Asset โดยระบุว่าใน Tileset ประกอบด้วย Tile อะไรบ้าง แต่ละ Tile อยู่ในตำแหน่งใด และเชื่อมโยงสัมพันธ์กันอย่างไรภายในระบบ

การทำ Visual Tileset

โครงสร้างของไฟล์ tileset.json

  • asset : ข้อมูลเมตาดาทาของ Tileset เช่น เวอร์ชันของมาตรฐานที่ใช้ เพื่อระบุว่า Tileset นี้พัฒนาตามมาตรฐานเวอร์ชันใด
  • geometricError : ค่าความคลาดเคลื่อนเชิงเรขาคณิตที่อนุญาตในระดับ Tile ปัจจุบัน หากค่าความคลาดเคลื่อนยังสูงกว่ากำหนด ระบบจะทำการโหลด Tile ย่อยที่มีรายละเอียดสูงขึ้นแทน
  • root : โหนด Tile หลัก (Root Tile) ของโครงสร้าง Tileset ซึ่งเป็นจุดเริ่มต้นในการจัดการและแสดงผล Tile อื่น ๆ
    • boundingVolume : ข้อมูลขอบเขตพื้นที่ที่ Tile ครอบคลุม อาจกำหนดเป็นรูปทรงต่าง ๆ เช่น กล่อง (box), พื้นที่(region) หรือทรงกลม (sphere)
    • content : ระบุชื่อไฟล์ 3D Asset ที่ใช้ใน Tile นั้น ๆ เช่น tile0.b3dm หรือไฟล์ประเภทอื่นตามมาตรฐาน 3D Tiles
    • children : รายการ Tile ย่อยที่อยู่ภายใต้ Tile ปัจจุบัน ซึ่งจะถูกเรียกใช้งานเมื่อจำเป็น เช่น เมื่อผู้ใช้งานซูมเข้าใกล้พื้นที่ดังกล่าว
  • refine : วิธีการแสดงผล Tile เมื่อโหลด Tile ย่อย มีค่าหลัก 2 แบบ ได้แก่
    • ADD : แสดง Tile ย่อยเพิ่มเข้าไปพร้อมกับ Tile ปัจจุบัน
    • REPLACE : แทนที่ Tile ปัจจุบันด้วย Tile ย่อย
ตัวอย่างโครง tileset.json
{
"asset": {
"version": "1.0"
},
"geometricError": 500,
"root": {
"boundingVolume": {
"region": [100.4931, 13.7563, 100.4940, 13.7570, 0, 100]
},
"geometricError": 250,
"refine": "ADD",
"content": {
"uri": "tile0.b3dm"
},
"children": [
{
"boundingVolume": {
"region": [100.4931, 13.7563, 100.4935, 13.7567, 0, 50]
},
"geometricError": 100,
"content": {
"uri": "tile1.b3dm"
}
},
{
"boundingVolume": {
"region": [100.4935, 13.7567, 100.4940, 13.7570, 0, 50]
},
"geometricError": 100,
"content": {
"uri": "tile2.b3dm"
}
}
]
}
}