Latihan - Menyiapkan data JSON untuk pengalaman Mixed Reality

Selesai

Menyiapkan data Anda untuk dunia Mixed Reality sebagian besar merupakan masalah untuk memastikan Anda memiliki file JSON lengkap.

Catatan

Membuat gambar dan model 3D berada di luar cakupan modul Learn ini, tetapi itu akan menjadi langkah lain jika Anda membuat pengalaman Mixed Reality dari awal. Dalam modul ini, Anda akan menggunakan gambar yang ada dan memastikan bahwa gambar dan data berkorelasi.

Dalam modul sebelumnya dari jalur pembelajaran ini yang terinspirasi oleh Space Jam: A New Legacy, Anda membuat aplikasi web yang menampilkan pemain dan nilai peringkat efisiensi pemain (PER) mereka bagi pelatih bola basket untuk memutuskan pemain mana yang akan diletakkan di lapangan dan mana yang harus diberikan istirahat untuk memastikan tim yang sehat.

Data di balik aplikasi web ini adalah file nilai yang dipisahkan koma (CSV) yang disebut game_stats.csv. Anda dapat menemukan file sampel di repositori GitHub.

Babylon.js dan toolkit Mixed Reality

Untuk proyek Babylon.js Mixed Reality, Anda dapat menarik semua gambar Tune Squad dari web. Untuk melakukannya, Anda memerlukan file JSON yang memiliki masing-masing pemain:

  • Nama
  • PER
  • URL Gambar

Untungnya, Anda dapat menggunakan sedikit Python untuk membuat file JSON.

Mengonversi CSV ke JSON dengan Python

Untuk mengonversi file CSV dari modul sebelumnya menjadi file JSON yang akan digunakan dalam modul berikutnya:

  1. Buka Visual Studio Code.
  2. Buka folder baru, misalnya, ConvertCSV.
  3. Buat folder baru, misalnya, convert.py.
  4. Unduh file CSV dengan masuk ke file di GitHub dan pilih Mentah. Atau, buka halaman ini. Kemudian, klik kanan di mana saja di layar, dan pilih Simpan Sebagai.
  5. Pindahkan file game_stats.csv ke folder ConvertCSV yang Anda buat di Visual Studio Code.

Anda harus menyiapkan konten berikut di Visual Studio Code.

Screenshot of Visual Studio Code showing only File Explorer with two files and a portion of the editor pane with an empty Python file.

Menulis pembaca CSV

Selanjutnya, gunakan convert.py file untuk mengekstrak hanya bagian yang relevan dari file CSV, seperti nama dan PER untuk setiap pemain.

Pastikan Anda mengimpor paket CSV, dan membuat sekumpulan konstanta yang akan mewakili tim Anda saat ini.

import csv

# The name of the player is in the second column (index 1).
NAME_INDEX = 1

# The PER of the player is in the 10th column (index 9).
PER_INDEX = 9

# There are only 15 players that we are reading in.
COUNT = 15

File CSV memiliki PER untuk setiap pemain empat kali, satu untuk setiap seperempat permainan. Anda hanya memerlukan nilai PER pertama, yang merupakan nilai sebelum permainan dimulai.

Gunakan kode berikut untuk membuka file CSV. Tembus 15 baris pertama, setelah header di baris pertama. Buat daftar nama, PER, dan URL tempat gambar pemutar dapat ditemukan.

# Open the game_stats.csv file.
with open('game_stats.csv') as csv_file:
    # Use the CSV reader and confirm the delimeter is a comma.
    csv_reader = csv.reader(csv_file, delimiter=',')

    # Initialize the counter and empty lists.
    character_count = 0
    names = []
    pers = []
    urls = []

    # Loop through each row in the CSV file.
    for row in csv_reader:
        # Ignore the first row since that is the header.
        if character_count == 0:
            character_count += 1
        # Only take data from the first 15 because we only need the player's initial PER, not for each quarter.
        elif character_count <= COUNT:
            # The name of the player is in the second column (at index 1).
            names.append(row[NAME_INDEX])

            # The image file of the player is their name with no spaces or period and all lowercase.
            urls.append("https://sjanlassets.blob.core.windows.net/assets/" + row[NAME_INDEX].replace(" ","").replace(".","").lower()+".png")

            # The PER of the player is in the 10th row (at index 9).
            pers.append(row[PER_INDEX])

            # Increment the counter so we only get one set of data for each player.
            character_count += 1
        else:
            break

Terakhir, Anda dapat menulis semua konten ini ke file JSON. Buka file JSON dalam mode tulis sehingga Anda menimpa apa pun yang sudah ada di sana. Kemudian, ulangi 15 pemain dan buat objek JSON untuk setiap pemain.

# Create a players.json file if it isn't already created and open it.
# The parameter "w" will overwrite the file if anything is in it.
f = open("players.json", "w")

# Write the opening bracket of the JSON object to the file.
f.write("[\n")

# Iterate over all of the players.
for index in range(0,COUNT):
    # Write the opening bracket of the first player object to the file.
    f.write("\t{\n")

    # Write the name, PER, and image url, with their labels, to the file.
    f.write("\t\t\"name\": \""+names[index]+"\",\n")
    f.write("\t\t\"per\": \""+pers[index]+"\",\n")
    f.write("\t\t\"imgUrl\": \""+urls[index]+"\"\n")
    f.write("\t},\n")

File JSON ini belum selesai. Itu karena Anda memiliki outlier dalam data asli yang Anda hapus. Tapi kau ingin memastikan dia bagian dari pengalaman Mixed Reality mu.

Menambahkan kembali pemutar yang hilang dalam data

Dalam modul pertama jalur pembelajaran ini yang terinspirasi oleh Space Jam: A New Legacy, Anda menyadari bahwa Anda memiliki beberapa outlier dalam data Anda. Jika Anda menyelesaikan modul ini, Anda mungkin ingat bahwa di Unit 5: Periksa outlier ada outlier yang memiliki nilai rendah untuk poin dan kepemilikan. Ini adalah baris 35, ID 40. Ternyata pemain tersebut adalah Yosemite Sam!

Anda ingin memastikan dia ditambahkan kembali ke data JSON Anda sehingga dia dapat muncul dalam pengalaman Mixed Reality Anda. Anda harus menulis sedikit lebih banyak kode.

Catatan

Pastikan sisa kode tidak diindentasi karena ini bukan milik untuk perulangan.

# Write the opening bracket of the Yosemite Sam object to the file.
f.write("\t{\n")

# Write his name, PER (0), and image url, with the data labels, to the file.
f.write("\t\t\"name\": \"Yosemite Sam\",\n")
f.write("\t\t\"per\": \"0\",\n")
f.write("\t\t\"imgUrl\": \"https://sjanlassets.blob.core.windows.net/assets/yosemitesam.png\"\n")

# Since he is the last of the Tune Squad, don't include a comma after closing his object.
f.write("\t}\n")

# Write the closing bracket to the JSON object to the file.
f.write("]")

# Close the file.
f.close()

Sekarang Anda akan melihat file JSON di folder Visual Studio Code Anda.

Screenshot of Visual Studio Code showing only the File Explorer with three files and a portion of the editor pane with a filled-in JSON file.

© 2021 Warner Bros. Ent. Semua Hak Dilindungi Undang-Undang.