CPSC 601.55 >> 2011 <<

2010 December 9
by admin

Biomimetic Computation in Arts, Architecture and Design will be offered the second time starting in January! For more information, please visit the new course website!

A Trans-disciplinary Program for Biomimetic Computing and Architectural Design

2010 December 9
by admin

Together with Josh Taron, I have submitted an article about the trans-disciplinary Computer Science/Architecture program established with the 2010-iteration of CPSC 601.55 at CAADfutures 2011. I will make the article available on my website after the conference.

We would like to thank our (former) students for the works we are presenting in this article!

Jared Brookes
Michael Scantland
Julie Brache
Ryan Polibroda
Ryan Trefz
Chris Vander Hoek
Arthur Coudeville
Jonathan Choo
Fadilah Hamid

(in order of appearance in the article)

Update

2010 September 23
by admin

Due to an exorbitant amount of work over the past few months posting impressions of the students’ works has been stalled. But I am confident that I will get to it within the next few weeks. Also, if you have questions regarding the course or one or the other past project, don’t hesitate sending me an email!

Conclusion

2010 April 17
by admin

I’d like to thank the following persons and institutions for making this course a success.

David Phillips
Timothy Davison
Allan Lyons
Prof. Josh Taron
Dr. Christian Jacob
Prof. Gerald Hushlak
Dr. Ken Barker
Dr. Rob Kremer
Dr. Richard Levy
Dr. Jean-René Leblanc

The Department of Computer Science of the University of Calgary
The Faculty for Environmental Design of the University of Calgary

And of course, I would like to thank my students for all the hard work and for their great achievements!

Sincerely,
Dr. Sebastian von Mammen

PS: Within the next few weeks I am going to post a summary website of the course projects on this blog.

Course Evaluations

2010 March 31
by admin

Please come to the lecture next week Tuesday, April 6, for filing evaluation forms for the course.

It will start at 6pm and only take 10min. Afterward, I can address your last-minute questions regarding your reports that will be due at midnight.

Thank you!

Upcoming Submission Deadline & Presentations

2010 March 30
by admin

As you all know the presentations will start shortly after the report submission deadline next week.

In general, the succession of presentations is planned as follows.

Thursday, April 8: Computer Scientists
Tuesday, April 13: Architects
Thursday, April 15: Artists

You are expected to attended all presentation sessions!

Each presentation will take 15min plus 5min for questions by a jury. I am in the process of sending out the schedules for your individual presentations.

The submission deadline for the report is next week Tuesday, April 6. This means that any submissions after Tuesday will be considered as not submitted at all.

As pointed out at many occasions, you are welcome to consult with me any time for individual feedback on your (a) project, (b) report, and (c) presentation preparations. However, the faster all the deadlines are approaching, the less time I will have to help you. So in order to ensure the success of your project, I urge you to consult with me asap!

Additonal Counselling Session, March 24th!

2010 March 23
by admin

Due to an increased demand of counselling, and because of conflicting due dates with other courses, Dave and myself will be there for you tomorrow (Wednesday, March 24th) morning, 10am as well.

I will expect you to show up in ICT 728.

Project

2010 March 18
by admin
  1. At this point in time, you should have a code base you can play with to produce results.
  2. You should have a very clear plan on what to do next and/or what to experiment with for the next few days.
  3. If you are lost conceptually or in respect to coding, consult me and/or Dave. We can also arrange for individual sessions at times different from the course hours.
  4. If you haven’t invested enough time yet, make haste!
  5. It is your responsibility to ask for feedback on your progress.
  6. I strongly recommend that you start writing your report at least (!) 10 days before the due date.
  7. I strongly recommend that you ask me for feedback on your report. I might need a day—or, if there are many requests—two days, so make sure you have enough time to address my potentially critical feedback.
  8. I strongly recommend that you ask me for feedback on your presentation outline.
  9. I invite you to give trial presentations on April 6. If you are interested, let me know so I can schedule your 20 min presentation.
  10. You will have to submit your code until April 15. The grades on your report and your presentation are conditional upon the validation of your work.

Invitation to the Project Presentations

2010 March 12
by admin

Interested students and faculty of our university are heartily invited to attend the project presentations at the end of the course!

They will take place in room PF2160 in the Professional Faculty bldg. of the University of Calgary (denoted as PF on this map) at 6pm on April 8, 13, and 15.

Remarks on Today’s Workshop Session

2010 March 11
by admin
  1. The submission of your code will not be required until the last class (April 15).
  2. Although you will need to describe what your implementation does in the Methodology part of your report (and in the presentation), the code itself does not appear in the report.
  3. If you rely on code created by someone else, be explicit about it and make sure to introduce novel aspects!
  4. If you have decided to work on a specific code based, it is generally a good idea to:
  • go through the code:
    (a) retrace what is happening: first in setup(), then in draw()
    (b) whenever you don’t know what a specific function call or a created object is for, look up the code in the included files and/or libraries or look up their synopsis in the reference of Processing or of the 3rd party library, respectively
  • whenever you have figured out what a method/object does, create according comments

Demo: Entropy and Symmetry Breaking

2010 January 9
Comments Off
by admin

I created this example to illustrate randomness and how its symmetry can be broken.

At first, a set of particles is aligned on a 3D grid. As soon as the value of the slider named randomness is increased (>0), the particles move randomly. The impact of the random movement increases with a greater value of the “randomness-slider.

There could also be an attracting force among the particles. If the respective “attraction” slider is increased, the symmetry of randomness is broken.

Control of the camera: Left mouse button and drag to rotate, middle mouse button to zoom, [Alt] + left button  to drag. Double click to reset the camera.

Entropy

There are several more libraries you will have to install in Processing to run the demos of this course. In addition to ControlP5 (that serves as starting point mentioned in homework assignment #1), you’ll need to install the following libraries (to save you some time, here’s an archive of my libraries folder):

Vecmath (see website)
PeasyCam (see website)
Fullscreen (see website)

advanced demos will also need:
JBullet (see website)
OBJLoader (see website)

During the course there will be many more libraries that you might want to integrate into your project or to just try out.

Update: If you are confused about the different tabs you see when you open the code, read the intro to the Processing environment.

Course update, January 14th

2010 January 14
Comments Off
by admin

1. Course Material Update

There are a few things I am going to put online by tomorrow (Friday) night.

(a) The slides and code of today’s lecture.
(b) The code of today’s lecture cleaned-up and fully documented.
(c) Another mini code sample that might help to do the first homework assignment.

2. (Some of the) Contents of the Next Lecture (Jan. 19th)

(a) I will recap and extend basic coding elements in Processing.
(b) I will go through the Entropy Demo in-depth.

Demo: In-class coding sessions 1 and 2

2010 January 15
Comments Off
by admin

Basics (exactly the code as it was at the end of the lecture)

BasicsCleanedUp (the lecture code cleaned-up and fully documented)

Basics3D (a small intro to 3D graphics that might help for assignment #1)

ClassDemo (Rectangle)

Links Collection

2010 January 15
by admin

Links to programming resources, EvoDevo examples and other related material.

Programming Resources

  • If working with Processing keep a browser window open to its built-in functions.
  • Check out the libraries offered on Processing’s website.
  • Processing makes use of the programming language JAVA. Most of what JAVA has to offer, works in Processing as well. Detailed documentation about what JAVA has to offer can be found in Sun’s JAVA documentation. Especially important are JAVA’s container data structures. In the course examples, I make extensive use of ArrayLists.
  • 3D Vectors, with x,y, and z variables, are required to place and move objects in 3D space. The Vector3f library is a quasi-standard for 3D Vectors in JAVA. Here is its documentation.

EvoDevo

Project/Coding/Mid-term

2010 January 15
by admin

Project Goal
For the project work, in addition to the formalities mentioned in the first set of slides, I expect that projects are realized based on developmental computation and/or evolutionary computation code. The outcome of the project should be some artistic piece or architectural design. It could be graphics, sculptures, models, music, installations, etc. You will receive assistance in finding, formulating and realizing your projects in the mid-term, the project proposal, in lectures and demo-sessions throughout the term until the deadline of the report submission.

Course Objective
As you saw yesterday, I am trying to get everyone on board with coding. The course is not about coding, but you need to know how it works, so you’ll be able to understand about the aforementioned biomimetic computational concepts and that you can use them for your own art, architecture or design.

Mid-term
I will not ask for any explicit code in the mid-term. I expect that you will have understood biomimetic computational concepts such as  genetic algorithms and computational development which I will hopefully be able to start covering in-class next week.

Room change

2010 January 15
by admin

From now on, we’ll be in PF2160 (the room with the door to the hallway) both Tuesdays and Thursdays.

Assignment #1

2010 January 16
by admin

Some hints for assignment #1.

1.3 (a)

  • Download the ControlP5 library from its website.
  • Follow the instructions provided under Libraries on the Processing website to get the library working (under the headline Contributions). Alternatively, you can follow my advice and store the library under the libraries folder of your Processing application. On Windows you would have a folder hierarchy like this /processing-1.0.9/libraries/controlP5/. On Mac OS you would need to search for Processing under your Applications folder, right-click it, click on “Show Package Contents”. In the exposed folder you would store the controlP5 folder into: /Contents/Resources/Java/libraries/contolP5.
  • Take a screenshot of one of the examples that are shipped with the library (and also found on the library’s website). You can take screenshots either by using a key-combination [Command + Shift + 3] on a Mac (further information under Preferences -> Keyboard -> Keyboard Shortcuts -> Screen Shots) or by, for instance, following the instructions posted here on Windows.

1.3 (b)

  • Follow the steps outlined above with a different library.
  • If it doesn’t offer any functionality that has a visual output, you don’t have to take a screenshot.

1.4

  • Download and unzip the archive of the Entropy demo.
  • Make sure you have all the libraries installed that are required by the demo. If you are not sure, follow the given link and install the libraries that you don’t have yet exactly as you did in exercise 1.3 (a) and (b)
    .
  • When opening the demo you should see five tabs being opened. If you are confused by this fact alone read up on the Processing environment.
  • In order to change the color and the appearance of the particles, look for the respective functions  that are demoed in the small Basics3D example that I’ve posted earlier. The functions that you are looking for are found in the File/tab: MovingSphere.

Assignment #2 is out

2010 January 19
by admin
  • you find the in-class demo code on the respective blog site
  • the new assignment is posted here
  • the slides are updated here

Flickering artifacts

2010 January 25
by admin

The artifacts encountered in the Entropy occurred as a result of using PeasyCam in the graphics mode P3D.

If instead of: size(800,600,P3D);

one calls: size(800,600,OPENGL);

the artifacts disappear. In order to switch into OPENGL-mode, you have to call the following statement at the beginning of your code:

import processing.opengl.*;

Demos: 2D/3D Boids, Stigmergy, Swarm Grammars

2010 January 26
by admin

2D Boids illustrates the fields of perception of the ‘boid’ (Bird-oid, Craig Reynolds, 1987) agents when you click on ‘perception’. Extend both the perception radius and angle to make the boid agents ‘see’. When clicking on ‘network’ all the boids that see each other are connected with a line — emerging interaction networks are illustrated. Once you activate various flocking urges, you will see how this interaction network reconfigures itself at each step of the simulation (at each call of the draw() method).

_2Dboids

3D Boids uses the same ‘logic’ for the boids’ interactions as 2D Boids. The only real differences are that in this example, the boids can accelerate in three dimensions (instead of two) and that they are drawn differently (cones instead of triangles). Unfortunately, this example does not come with the illustration of the boids’ fields of perception.

_3Dboids

SggStigmergy shows a model (inspired by Guy Theraulaz et al.) on how insect nest constructions (in the given case of the Chartergus Wasp) can be built based on indirect communication through the environment (stigmergy). In this example, a multi-agent simulation framework is being used that is called ‘Swarm Graph Grammars’. Agents are added to a SwarmGraphGrammar object and in the draw()-method, the methods ‘activate()’, ‘execute()’ and ‘cleanup()’ of the SwarmGraphGrammar object are called to execute the agents’ behaviours. The logic of the agents of this example is described in the file ‘chartergus.xml’.

SggStigmergy

The following Swarm Grammars example shows how tracing the flight of boids can lead to complex sculptures (weigh the boid urges and click on ‘more’ repeatedly). It also shows how reproduction/division of swarm agents can yield branching patterns (click on ‘division’).

SwarmGrammars

Demos: Teapot, Spiraling, Packing, 2D/3D Cracking, Game of Life, Dynamic Mesh

2010 January 28
by admin

Teapot illustrates the path from vertices to triangle meshes to lighting (requires objloader library)

The following little apps demo trivial procedural mechanisms as they are often found in “bio-inspired” art and architecture. They follow the code recipes found in Pamphlet Architecture 27: Tooling, Aranda, B. & Lasch, C.

Spiraling Very simple example in which a spiral is created. The process is similar to drawing a circle but with a offset in the radius.

Packing Packs circles into a rectangular space.

Cracking Cracks triangles. I.e., the centroid of a triangle is computed and used as a new vertex to divide the original triangle in three new ones.

Cracking3D Does the same thing in 3D.

Conway’s Game of Life 3D This app comes shipped with Processing but I felt the urge to turn it into 3D for demoing.

DynamicMesh (requires superCAD to export the generated mesh) is much closer to real developmental models than the procedural Tooling examples above. The vertices of a 3D mesh become active, change their location and thus change the morphology of the mesh itself. If those nodes interacted as in the boid or Swarm Grammar simulations, it could get close to modeling the actual bio-chemical processes in natural developmental systems.

update!

2010 February 2
by admin

The slides on Evolutionary Computation as well as the summary of the seminal lectures are now online on the Slides page.

update!

2010 February 4
by admin

The project proposal description is posed under assignments.

You can submit a proposal together with your team partner or by yourself. In case you submit your proposal as a team (of two), please make sure to put both names on your proposal and clearly outline the contributions (methodology) and the working plan (timeline) of each team member!

For those of you who haven’t had an opportunity  to team up, yet: after reading week I will have read and evaluated your proposals and I might be able to suggest possible teammates that could support and/or complement your ideas.

Swarm agent simulator

2010 February 8
by Dave

You can try out this little swarm agent simulation environment we put together. No difficult coding required; various agent behaviours can be implemented via rule files, so feel free to play around and see if you can come up with interesting simulations. User guide and examples provided.

SggStigmergy

update!

2010 February 9
by admin

The deadline for the electronic submission of your project proposals has been extended until Monday, February 15th, 12pm (sharp).

Project consultations on February 23/25

2010 February 12
by admin

Instead of regular classes on Feb. 23 and 25, I will give you individual feedback on your project proposals. Those of you who haven’t registered for an appointment on Feb. 23/25 yet, please pick a slot on the schedule that I have posted next to my office door (ICT 728). In case you have formed a team, you should register for one appointment together.

The individual consultations will take place in or next to my office in ICT.

As usual, the slides were updated after class.

Project Consultations February 25th

2010 February 23
by admin

… will take place in our regular classroom, PF2160!

Clicking/Selecting objects in 3D space

2010 February 26
by Dave

For those of you who are interested in being able to select objects in a 3D environment, which isn’t quite as straightforward as selecting objects with the mouse on a simple 2D simulation:  Refer to the following link for examples of two different ways of performing 3D selection (aka “picking“): colour buffering and raycasting.

http://processing.org/hacks/hacks:picking

The Processing code for the examples is available through the above link (along with a working applet of the raycasting example).  However, some of it is based on an old version of Processing and won’t run as is. For convenience I (Dave) have fixed the code and provided it for you here:

3D_Picking

I found examples of two different methods of selecting objects in 3D space, from here:

http://processing.org/hacks/hacks:picking

I downloaded the code and put them into processing sketches in the attached zip file.  There is a working applet of the raycasting example at the link above, but I had to slightly modify a couple lines of the code for it to work in Processing because it’s based on outdated superceded syntax and didn’t work at first.

I’ll add the link and files to the blog as well.

Cheers,

Dave

update!

2010 March 3
by admin

Tomorrow (March 4th), Navneet Bhalla will be presenting work on self-assembly systems in class.

Next week Tuesday, I will provide you information about:

  1. The structure and contents of the expected course report
  2. Expected detail and quality of your writing, i.e. regarding argumentation and references
  3. How to use LaTeX to compose and format your submission
  4. How to manage your references with BibDesk, representative for any other BibTeX-management software, and integrate them into your work

Starting next week Thursday, Dave and I are going to provide conceptual and coding support during class.