|  
         Independent Study Proposal: Architectural Design 
          CVE 
        Project Log 
          January 07, 2003 - Checklist 
        Feature List:  
        
          - Create floor plate and walls
 
          - Create columns and windows
 
          - Modify dimensions on all features
 
          - Modify solid colors and transparency
 
          - Save file to VRML format
 
          - Switch between orthogonal views
 
          - Collaboration features 
            
              - Type text back and forth
 
              - Voice communication
 
              - Annotate design (?)
 
             
           
         
        January 10, 2003 - Ideas 
          for Modifier Grips 
        [insert scan] 
        January 14, 2003 - More 
          Feature Ideas 
        
          - Choose avatar height and vary viewpoint to achieve an accurate sense 
            of space
 
          - Record session and playback: This would be quite difficult to achieve. 
            Press 'record' and all actions would be parsed into a text buffer 
            (Java) and saved to a VRML file.
 
          - The shape library should be simple, based on the Froebel blocks
 
         
        Competive analysis: Look at Greenspace (at U. Washington 
          HITL) and DIVE 
        January 17, 2003 - Possible 
          Use Cases 
        Use Cases: Ask users to design objects with simple 
          or no program, e.g. tower, bridge, apartment, pavillion, or fountain. 
          In an instructional setting a professor could use this system to illustrate 
          the basic spatial concepts behind famous structures. 
        January 22, 2003 - GUI 
          Paper prototype 
        [insert scans] 
        January 23, 2003 - Modifier 
          Widget Prototypes 
        [insert scans] 
        January 24, 2003 - Scripting 
          Framework 
        I need to figure out a basic scripting framework 
          for object creation/interactions. 
          Select from menu > place object > make modifications 
          I think I need to use CreateVRMLFromString() and addRoute() functions 
          in the VRML/Javscript Browser interface.  
        February 02, 2003 - Scripting 
          Framework 
        I have mapped out a simple framework: 
        
          - CreateVRMLFromString() > creates an object and adds it to scenegraph
 
          - AddRoute() > adds a route to all existing modifiers (scale, move, 
            rotate)
 
          - Each button in shape menu has a separate script which sets the script/sensor 
            enabled to TRUE
 
         
        February 04, 2003 - Scale 
          and Rotate modifier widgets 
        [insert VRML file of widgets] 
        I have the basic elements of the scale and rotate 
          widgets working. The problem now is getting them dynamically routed 
          to each object created by the system and allow the user to switch 
          between and combine modifiers. Once that is finished, 
          I have to add routes so that all actions are distributed on the multi-user 
          server!  
        February 18, 2003 - Distributed 
          Success! 
          I finally ported a piece of my prototype to the DeepMatrix server I 
          have running at vollaro.homelinux.com. I was able to successfully distribute 
          VRML actions between the two worlds! Here is the process: 
          - Create a PROTO for each data type (SFInt32, SFBool, etc.). See DeepMatrix 
          documentation.  
          - Define a custom field for each routable, shared action. This gets 
          placed between any action routes  
          - The server listens for any traffic on these routes and distributes 
          the routes to all clients. 
          [insert code snippet] 
        February 20, 2003 
          To do: 
          - Write "create object" scripts 
          - Multiple viewpoints and avatars (gestures?) 
          - Selection and multi-select(?)  
          - Write about MUD-like possibilities 
          - User testing scenario: Compare physical coordination and visual perception 
          of blocks to virtual blocks. (CVE allows scaling and first-person viewpoint 
          of space) 
          
        February 24, 2003 - Creation 
          and Selection Scripts  
          - AddRoute uses MFNode[n] to route 'to' 
          - addroute needs both nodes to be created within the script. Use DEF 
          and USE to create instances of create scripts. 
          - Selecting one object must de-select the others 
        ** I may need to create a full-blown Java application 
          tokeep track of created and selected objects. 
        February 26, 2003 - Creation 
          and Selection Scripts  
          Sequence 
          1. Click on menu item, route the touchsensor to the CreateObj script 
          2. Node is created from string, script w/ an ID is saved 
          3. Node is addRoute-ed to modifier scripts 
          4. Node is added to Group and randomly translated 
          5. Node is added to MFNode ObjectRegsitry[] 
        
           
              | 
            -> Field SFInt32 is Selected = 
                0 
                When object is created isSelected = objectID 
              When another object is selected (touchsensor) route objects ID 
                script field ID to create object script and: 
              - set to isSelected 
                - addRoute to node[isSelected] 
                - but, first deleteRoute to previously selected objects  | 
           
           
              | 
           
         
        February 28, 2003 - New 
          Modifier Widgets 
        I was able to create a scale widget that appears 
          on and follows the object. Now I need to: 
        - test selecting multiple objects 
          - Moving: modify scaling script to route to translation eventIn 
          - Rotating and Deleting 
          - re-think and re-scale the GUI panel 
          
        March 03, 2003 - Future 
          Uses and Applications 
        The following are some ways I imagine this type 
          of application being used: 
        - Collaborative CAD: Similiar to using Netmeeting 
          to share single-user apps, but the server would save a log of all actions 
          and a saved sequence of all design moves. The act of building 
          the model is as important as the final product. 
          - A front-end to a knowledgebase of architectural elements (see X3D 
          and aecXML) 
          - Collaborative online community building: As MUDs become more graphic 
          in nature, this type of system could be used to collaboratively build 
          rooms and spaces within a MUD. 
          - Add advanced features such as NURBS and genetic algorithms so people 
          can inhabit their conceptual designs. 
          - Port to advanced hardware like CAVE. 
          - Interface with physical objects like blocks that are "aware" 
          of the moves and modifications. 
        March 13, 2003 - Viewpoint 
          Selection 
        Remove VRML plugin controls and replace with custom 
          Study and Walk controls. Allow user to select between multiple viewpoints 
          and rotate them in a limitied radius. 
          
        March 14, 2003 - Modifier 
          and Selection Script Refinements 
        Modifier button sequence 
        
          - Click Button ON
 
          - change button state switch to ON
 
          - changed current object modifier to (n)
 
          - turn off active modifier (taken care of by the above Switch node)
 
          - set other buttons to OFF
 
         
        Selection Process 
        
          - Create FIRST object
 
          - Set this object as selected and hightlight it. Enable XY move modifier 
            and button
 
          - Create a SECOND object (iterate createID)
 
          - This object has a touchsensor for selecting
 
          - Click on SECOND object
 
          - Enable the XY move modifier and button for this object
 
          - Loop through object registry starting at 1 (not 0) and set all other 
            objects to unselected.
 
         
        March 21, 2003 - Modifier 
          and Selection Script Refinements  
        Problems with selection and modification 
        
          - When bounding box is rotated, scaler/mover widgets and their local 
            coordinate systems are also rotated. 
 
          - IndexFaceSet objects are not modifying correctly
 
          - Possible solution: Scale bounding box based on 
            Transform's bboxscale value + .2 or so. This should take cared of 
            IndexFaceSet objects also.
 
          - Cannot select and modify mutliple objects.
 
          - Possible solution: Click once, select, click again 
            deslect. As you select multiple objects, move them into and MFNode 
            (children of a Transform). The bbox of this transform becomes master 
            for all modifier widgets.
 
         
        March 26, 2003 - Problems 
          with Deepmatrix server 
        I discovered a problem today. The DeepMatrix nodes 
          must be in the top level group, otherwise the server will not be able 
          to read the events. I need to set up another registry MFNode to contain 
          the matrix nodes and link the two with addRoutes. 
        Also, selection and object location is not propogating 
          between clients. The second client creates a random object upon loading... 
        April 1, 2003 - Met with 
          Prof. Beier 
        Goals: 
        Immediate:  
        - Fix selection and creation scripts so they propogate 
          between clients 
          - Add a grid to the floor plane 
          - Possibly add a "shadow" for each object to help indentify 
          their Y location 
          - Create a "demo" object that users can navigate and modify 
        Long-term: 
        - Snapping 
          - Orthogonal views 
          - File exporting 
          - Multiple selections 
        April 2, 2003 - Final 
          To-Do List 
        - Grid on floorplane 
          - Add "demo" button to create a workable sample (use something 
          recognizable like the Barcelona pavillion). 
          - Fix the selection scripts, add a locking mechanism. 
          - Fix mutli-user support: Clean up errant objects that are created when 
          client loads 
          - Add better avatars to the list, some simple humanoids. 
          - Shared viewpoints. 
         |