Deliverable 1: A-Frame Scene Serialization


Description:

The goal of this deliverable is to capture or serialize a given A-Frame scene into a JSON file. This deliverable also includes a deserialization function which will accurately reconstruct the saved A-Frame scene back into the 3D modeling environment. Through voice commands, the user will be able to easily save their modeling work during a session and reload it in future sessions. Afterwards, testing will be conducted to evaluate the serialization functionality on different scenes.

Implementation Steps:

  1. Choose format for saving the scene's state
  2. Implement serialization functionality
  3. Implement deserialization functionality
  4. Detect and process voice command input
  5. Test serialization/deserialization on different scenes

System Design Update:

  • System Instructions Added:
    • Use <s> tags for saving scenes and <l> tags for loading scenes. Include 'Disk' or 'Browser' within the tags to specify where the user wants to save or load. If not specified, assume 'Disk'
    • For saving/loading, if the user specifies a filename, include it inside corresponding tags, all lowercase with underscores for spaces, e.g. <s>Disk: basic_scene</s>

Functional Testing Results:

  ( * = executed with a button press)

  • Scene 1: Simple scene with 3 different entity shapes

    Scene 1

    Test Command Description Pass/Fail
    1 Save the scene Test serialization of a simple A-Frame scene with a basic entities(Defaults to Disk) 1
    2 Save the scene to disk Test serialization to computer disk 1
    3 Save the scene to disk as scene_1 Test serialization to computer disk with specified filename 1
    4 Save the scene to the browser Test serialization to browser local storage 1
    5 Save the scene to the browser as scene_1 Test serialization to browser with specified filename 1
    6 Load scene Test deserialization of a simple A-Frame scene with basic entities *1
    7 Load scene from Disk Test deserialization from computer disk *1
    8 Load scene_1 from Browser Test deserialization from browser with specified filename 1

  • Scene 2: Scene containing complex and nested entities

    Scene 2

    Test Command Description Pass/Fail
    1 Save the scene Test serialization of an A-Frame scene with nested entities(Defaults to Disk) 1
    2 Save the scene to disk Test serialization to computer disk 1
    3 Save the scene to disk as tree scene Test serialization to computer disk with specified filename 1
    4 Save the scene to the browser Test serialization to browser local storage 1
    5 Save the scene to the browser as tree scene Test serialization to browser with specified filename 1
    6 Load scene Test deserialization of a complex A-Frame scene with nested entities *1
    7 Load scene from Disk Test deserialization from computer disk *1
    8 Load tree scene from Browser Test deserialization from browser with specified filename 1

  • Scene 3: Scene containing dynamic entities (Animation)

    Scene 3

    Test Command Description Pass/Fail
    1 Save the scene Test serialization of an A-Frame scene with a animated entities(Defaults to Disk) 1
    2 Save the scene to disk Test serialization to computer disk 1
    3 Save the scene to disk as animated pyramid Test serialization to computer disk with specified filename 1
    4 Save the scene to the browser Test serialization to browser local storage 1
    5 Save the scene to the browser as animated pyramid Test serialization to browser with specified filename 1
    6 Load scene Test deserialization an simple A-Frame scene with animated entities *1
    7 Load scene from Disk Test deserialization from computer disk *1
    8 Load animated pyramid from Browser Test deserialization from browser with specified filename 1

Edge Case Testing Results:

Test Scene Input Command Description Handled
1 Empty Scene Save the scene Test serialization of an empty A-Frame scene 1
2 Empty Scene Load Scene Test deserialization of an empty A-Frame scene 1
3 Invalid Json Scene Load Scene from Disk Test deserialization of invalid JSON file 1
4 None Add a blue cube and then save the scene Test multi-command save 1
5 Scene1 Load scene1 from browser, Move cone up and change the cube's color to blue Test load and then modification 1
6 None Load Scene123 from browser Test load of non-existent scene 1
7 None Load from browser Test load from browser without filename, assumes default 1
8 None Load the scene I was working on yesterday Test load with ambiguous command 1