Architectural Design CVE

HomeUndergraduateGraduateProfessionalResumeSitemap
Home > UM School of Information > Independent Study > Project Log

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

  1. Click Button ON
  2. change button state switch to ON
  3. changed current object modifier to (n)
  4. turn off active modifier (taken care of by the above Switch node)
  5. set other buttons to OFF

Selection Process

  1. Create FIRST object
  2. Set this object as selected and hightlight it. Enable XY move modifier and button
  3. Create a SECOND object (iterate createID)
  4. This object has a touchsensor for selecting
  5. Click on SECOND object
  6. Enable the XY move modifier and button for this object
  7. 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

  1. When bounding box is rotated, scaler/mover widgets and their local coordinate systems are also rotated.
  2. IndexFaceSet objects are not modifying correctly
  3. Possible solution: Scale bounding box based on Transform's bboxscale value + .2 or so. This should take cared of IndexFaceSet objects also.
  4. Cannot select and modify mutliple objects.
  5. 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.