University of California, Berkeley EECS Dept, CS Division |
||
Jordan Smith |
SLIDE: Scene Language for Interactive Dynamic Environments |
Prof. Carlo H. Séquin |
Home | Goals | Publications | People | Gallery | Assignments | Distributions |
At the end of the Spring 1999 semester of CS184: Foundations of Computer Graphics, 44 students filled out surveys about the SLIDE graphics language, rendering system, and set of programming laboratories. The following shows their responses in a condensed form.
Repeats | Student Comment | Response |
---|---|---|
20 | Projections, Perspective Transform, Homogeneous Coordinates, and 4D Clipping | Not surprising, it is hard for students to visualize. In future, create more instructive examples. |
10 | Lighting | Not surprising, it is difficult to calculate intensity profiles on paper. |
8 | Matrix Transformations, Turtle Walk, Row vs. Column Vectors | Not surprising, many people have trouble visualizing 3D transformations, especially the first time they learn about them. |
7 | Splines | Splines were not given a full treatment in this class because of time constraints and because CS284 is devoted entirely to Splines. |
4 | The CIE Color Space | The CIE color space was not a stressed topic in this course. The students were only given a high level description of it. |
2 | VRC and VRP | View Reference Coordinates and View Reference Points are treated in a somewhat confusing manner in Foley, van Dam, et al. In addition, the SLIDE model for the setting up a camera deviates from the book in this case. The solution is to find a book which the SLIDE model is more compatible with. |
2 | SLIDE Hierarchy | We are some what surprised by this. The students have been using the SLIDE hierarchy for modeling hierarchical models all semester. Maybe we need to revisit some of these issues. |
2 | Antialiasing | This is another topic which was only given a superficial treatment in the class. |
1 | Degrees of Freedom | This is a concept which can be confusing to students the first time they encounter it. |
1 | Implementing Stereo Viewing | This can also be confusing for students, especially students who physically can not experience the illusion. Also more explanation needs to be added for the next iteration of SLIDE. |
1 | Sutherland-Hodgman Clipping | I am not sure if they really meant clipping in 4D homogeneous coordinates. |
1 | Parametric Equations | Facility with parametric equations is assumed in the prerequists of this course. |
Category | Repeats | Student Comment | Response |
---|---|---|---|
Fun / Rewarding | |||
8 | Cool and Fun Assignments | ||
8 | Visual aspect allowed to view results of efforts | ||
Educational | |||
9 | Focused lab assignments closely followed lecture material | ||
1 | "see formulas and concepts from class plug directly into code" | ||
5 | Progressive or incremental learning of Rendering Pipeline | ||
5 | Hands on approach / Practice of concepts | ||
2 | Cohesive overall picture -- get to see total package from day one | ||
6 | Learned a lot about the Rendering Pipeline | ||
1 | Challenging | ||
2 | Good interactions with TA's and fellow students | ||
Ease of Use | |||
7 | SLIDE language simple yet powerful | ||
4 | SLIDE objects, instances, and groups made it easy to build simple scene hierarchies | ||
1 | Primitive objects | ||
4 | Tcl procedural object generation more convenient then flat data files | ||
5 | Renderer program was easy to use | ||
6 | On line documentation was good | ||
2 | Good example .slf files for labs | ||
Interactivity | |||
3 | Renderer runs with real time interactivity | ||
1 | Crystal Ball UI | ||
6 | Tk widgets useful for controlling object parameters | ||
Labs' Source Code | |||
11 | Extensible and Modular C++ framework was easy to code in | ||
2 | Learned about software engineering and good coding style | ||
1 | Liked the Hungarian variable naming convention | ||
9 | Fresh start for each lab assignment | ||
5 | Areas of modification are well commented in the code | ||
2 | Portability of code (can work at home) | ||
1 | OpenGL is useful for debugging | ||
1 | Fast to compile | ||
1 | Much of the tedious coding done in advance |
Category | Repeats | Student Comment | Response |
---|---|---|---|
Documentation | |||
11 | More documentation (i.e. Assignment 3) | ||
4 | More examples | ||
1 | Better OpenGL documentation | ||
1 | Better Tcl/Tk documentation | ||
2 | Teach a Tcl/Tk programming primer in the beginning of the semester | ||
1 | Better explaination of Scene Hierarchy | ||
1 | Assignment 3 is too hard | ||
1 | Better presentation of relevance of pure linear algebra | ||
8 | Matrix Transformations are hard | ||
Source Code | |||
15 | More comments in the code | More commenting of fields and procedure requirements will be added, but a balance must be set so that the students will be forced to reason out the problems themselves instead of simply following a list of instructions. | |
4 | Comment all flags better | ||
2 | Pre and Post condition comments for all Procedures | ||
2 | Some method names are counter intuitive (Set which returns reference which can be assigned a value) | ||
2 | Interface to Vector and Matrix package is unintuitive | ||
2 | Remove all Hungarian notation | Hungarian naming convention gives a short hand for type information. This is a valuable form of commenting and will not be removed. | |
1 | Details of SLIDE has nothing to do with Computer Graphics | I don't understand this comment | |
Portability | |||
4 | Port to more platforms (Win95, Linux, etc.) | SLIDE works on all platforms which support Tcl/Tk and OpenGL, which I believe is pretty much all platforms. | |
1 | Precompiled binaries and libraries for more platforms | We were only supporting the UC Berkeley instructional machines this semester. In the future, SLIDE will be supported for arbitrary computers over the web. | |
2 | Dependence on environment variables and initialization scripts (window.tcl) | ||
1 | Too dependent on Windows NT | I don't understand this comment. From its conception, SLIDE
has been solely developed on Unix based SGI workstations and then
ported to NT. One of the main demands by the faculty this semester
was to port SLIDE to NT, which we have struggled to do and which works
pretty well. The only justification of this statement that I can think of is that Unix is a much better OS for software development, so there should be a concentrated effort to get Linux running on the machines in 349 Soda with hardware OpenGL acceleration. |
|
SLIDE Language | |||
1 | True mirroring transformations | ||
1 | Switch cameras without totally modifying transformations | This is fully supported by having multiple render statements for the same viewport. Need to document this feature better. | |
1 | Give SLIDE viewports Tk path names for the bind command to use | I don't have a good answer for this one. As we move away from the SLIDE render statement controlling input more to having it all done in Tcl, we need to address this. | |
1 | Annoying that SLF_MOUSE_X and SLF_MOUSE_Y only update with mouse button down | Again need to revisit issues of data input to the system. | |
SLIDE Renderer | |||
5 | Memory leaks when reloading files | There are issues having to do with multiple windows which I need to redesign to fix this problem. | |
3 | Too slow | Profiling needs to be done, but it does work reasonably fast for reasonably sized scenes. | |
1 | Default for cylinder Z-slices seems to be 8, should be 1 | ||
1 | Two sided lighting for SLF_HOLLOW | ||
8 | Texture mapping and surface properties on machines in 349 Soda | Seems like it is a machine set up problem having to do with the OpenGL attribute stack. | |
1 | LOD flags don't work | It is a know bug that SLF_EDGES and SLF_BOUND will not work on static trees under OpenGL because the OpenGL display list mechanism will not allow it. | |
3 | Lights and Surface Reflectivity | There are problems having to do with translating SLIDE values into OpenGL light descriptions, but there may be implementation bugs on top of that which still need to be fixed. | |
1 | Point and Spot Lights do not illuminate much | This is a problem with the parameters chosen or the Phong lighting model itself. (Nothing I can fix) | |
1 | Option to toggle OpenGL clipping | This is impossible and it is not useful for the OpenGL renderer. | |
2 | Error messages easier to read by sending to a file | In Unix, redirect output of slide to a file. I believe DOS has a similar mechanism. | |
5 | Better error messages especially for Tcl blocks | ||
1 | Better debugging of .slf embedded Tcl code | ||
1 | Better error checking of data, viewer sometimes assert fails on bad values | It is difficult to do full checking when the .slf file is allowed to write any random value it wants. I am sure there are bugs to fix of this kind. | |
Class Set Up | These are not problems with SLIDE, but are interesting concerns. | ||
1 | Lack of Computers | ||
2 | Computers broken | ||
1 | Have a TA in the Lab | ||
2 | Fix submit procedure |
Category | Repeats | Student Comment | Response |
---|---|---|---|
Random | |||
1 | Make SLIDE into a commercial product | ||
Laboratories | |||
1 | Teach how to do Texture Mapping | ||
1 | Teach more about using OpenGL | ||
Source Code | |||
1 | Redesign List classes | ||
1 | Multithreading SLIDE to take advantage of faster SMP machines | ||
1 | Platform independent binaries (Java???) | ||
SLIDE Language | |||
1 | Easier to control Camera frustum | ||
1 | End cap option for cylinders and cones | ||
2 | More Primitives | ||
1 | CSG | CDA's and RIB support??? | |
1 | Halfspaces | ||
1 | Point Particles (Volume Rendering???) | ||
2 | Integrate C and C++ dll's better | ||
2 | Switch to Perl / Tk (no Tcl) | Perl is as evil as Tcl if not worse | |
1 | Better integration of input devices (keyboard, mouse, etc.) | ||
SLIDE Renderer | |||
1 | Set rendering options from command line or from within .slf file | ||
2 | Support more Texture Map file formats (tiff, gif, jpg, ...) | ||
3 | Draw coordinate frames and models for lights and cameras (like draw normals option) | The user can easily build this functionality into their scene hierarchy, and that is the cleanest way to do this without totally hogging OpenGL resources. | |
1 | Draw Grid over screen for measurements | ||
1 | Allow .slf code to query bounding box info | ||
1 | Read other input formats (RIB) | No! | |
1 | Better navigation interface | ||
1 | Support for Sound (done with exec from Tcl or within dll's) | ||
2 | Dynamically modify scene graph topology | Incremental Compilation | |
3 | Visual 3D Model Editor | ||
OpenGL Supported | |||
5 | Transparency | ||
3 | Bump Maps | ||
1 | Reflectance Maps | ||
1 | Surface Emission Color | ||
1 | Object Picking | ||
Advanced Rendering | I question how possible it will be to do these in real time. For now RIB and BMRT are the solution. | ||
3 | CSG | Need to see how fast CDA's are. | |
2 | Phong Shading | ||
4 | Better lights (Area sources) | ||
15 | Shadows | ||
6 | Ray Tracing | ||
6 | Radiosity | ||
1 | Procedural Textures |
Category | Repeats | Student Comment | Response |
---|---|---|---|
Positive | 35 | ||
1 | Learned a lot | ||
1 | Difficult, but rewarding | ||
1 | "I feel like I understand the rendering pipeline." | ||
1 | Using the system is fun (Final Projects) | ||
1 | Flexibility to do interesting things | ||
1 | With effort can make professional looking scenes | ||
1 | Good documentation by the end | ||
1 | Easy to learn and use | ||
1 | SLIDE is intuitive | ||
1 | Labs are intuitive | ||
1 | Nice software framework | ||
1 | Nice having solution executables to play and compare with while doing labs | ||
1 | Fresh start each assignment | ||
Neither | 5 | ||
5 | Learned a lot, too much work | ||
Negative | 4 | ||
1 | More comments and documentation needed | ||
1 | Some areas of commented code needed no changes | ||
1 | SLIDE implementation sometimes mysterious and confusing | ||
1 | Possible to complete labs without totally understanding what is going on | This is bad. It means that the student was just guessing instead of reasoning out what was supposed to happen. Maybe, we are giving them too much coding help. | |
1 | Dealing with details of SLIDE is time consuming and does not have much to do with Computer Graphics | ||
1 | Work tedious and confusing at times | ||
1 | Lost as what to do and how to do it, partners were not very helpful | ||
1 | SLIDE and Tcl were too buggy for me to realize my good ideas | ||
1 | Tcl is slow and anal | ||
1 | Should learn more OpenGL programming because it is marketable |
Category | Repeats | Student Comment | Response |
---|---|---|---|
Positive | |||
14 | Helped to learn material a lot | ||
7 | Learned more from assignments than in other classes | ||
6 | Assignments focused on relevant topics along with lectures | ||
3 | Weekly assignments are better than a few big ones | ||
1 | Assignments much more challenging than in other 4 unit classes | ||
1 | Hands on without being too in depth | ||
1 | Learned coding practices (software engineering) | ||
1 | Tedious coding provided in assignments | ||
1 | Most time consuming, but 1 of 2 favorite classes in 4 years | ||
Negative | |||
1 | Too much work required, more than other classes | ||
1 | Assignments took too long, so could not learn theoretical and mathematical aspects | If they had taken the time to read the materials before coding, it would have taken them less time. | |
1 | Could finish assignments without understanding why | Did not take the time to understand concepts before starting | |
1 | Assignments very heavy, hard to absorb all info, worn out after each assignment | ||
1 | Did not help to learn, but a lot of programming experience | Strangely enough, this was from a student who said that they had had a positive experience in the class | |
1 | (work required) to (knowledge gained) ratio is poor | ||
1 | Less time learning concepts than other classes | ||
2 | Many hours just to understand the code and data path | This could have been many, many hours coming up with their own data path from scratch. I wonder which would take longer over the course of the semester considering the number of rewrites which would have probably be necessary. | |
4 | Many hours to track down minor bugs without learning. "importance on irrelevant programming details" | Learning how to debug well is a skill that should have been taught earlier in education. | |
1 | Z-buffering and scan conversion assignment was bad | Interestingly this was the one assignment where they actually started with a blank page. |
Based on the comments collected in this survey of CS184 students in Spring 1999, the consensus is that SLIDE is a beneficial tool for learning Computer Graphics. The following is a summary of the positive and negative aspects of SLIDE as told by the students.
The students had many positive comments about SLIDE. They were motivated to keep up with the pace of the assignments becasue the subject matter is fun and the results of the assignments are rewarding and interactive. The labs have well defined descriptions and keep pace with the materials presented in lecture. The labs incrementally build up a complete software renering pipeline. Taken as a whole, the labs form a well structured, cohesive system built in C++ on top of OpenGL and Tcl/Tk. Each lab starts with the solution to the previous lab and incrementally adds new rendering functionality. This fresh start policy was a welcome safety net for students, because it prevented them for being penalized all semester for any mistakes made in early assignments.
The SLIDE language is simple enough such that students could readily learn and apply it to build scenes. At the same time, it is powerful and flexible enough for students to build interesting, interactive 3D projects with it.
The negative comments of the students will be taken into account in refining the SLIDE system. Many students complained that the on line documentation was confusing and incomplete at times. A concerted effort was made through the course of the semester to provide enough information for the students to learn and complete their assignments, but more work needs to be done to refine the documentation and make it easy to reference. Because the students were modifying my source code, there is common complaint that there were not enough comments in the code. The suggestions to write pre- and post-conditions for all the procedures and to describe all the flags better will be taken into account on the next update to the assignments. At the same, it is important not to over comment or else the students will end up just following a list of instructions instead reasoning out their own solutions. It is important to make sure the students become self sufficient programmers even though they are working with a frame work. This is a difficult balance to strike.
Many students complained that the work load was too heavy. Others complained that they were so bogged down by coding and implementation that they did not feel that they were learning the concepts. Based on these comments, it appears that we need to make a greater effort at teaching better work study habits. We need to stress the importance of understanding before implementation. The students to digest the principles and applications of the different algorithms in the rendering pipeline before they sit down to write any source code. I believe that if we could get students to follow these practices, then they would find that the actual implementation time would be greatly diminished.
Another comment which I have is that it is important that students fulfill the prerequisites before taking this class. CS184 demands a lot of mathematical ability as well as good coding skills. Students need to be familiar with Linear Algebra (Math 110) to be able to get a good understanding of the geometric algorithms. The coding demands are also pretty high. It is taken for granted that students are comfortable with data structures like linked lists and hash tables. Students must also be experienced with sorting algorithms. Because the SLIDE renderer is developed in C++, it is important that students be comfortable with memory management and object oriented class hierarchies. Another important factor is that Tcl is used as the dynamics language for SLIDE. Tcl is not currently taught in the lower division classes, so it is important to teach the students effective ways of programming in Tcl early in the semester. Maybe in the future, Tcl could be used instead of Scheme to teach the introductory Computer Science class CS61A?
[an error occurred while processing this directive]