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.
|