PDA

View Full Version : Architectural animation problem


brammelo
08-30-2003, 11:31 AM
Hi all,

I am trying to make an animation and a couple of stills for the final project of one of my friends. The project is pretty straightforward: on top of an existing pier in Amsterdam (200mx800m, more or less), he places what he calls a service layer, containing all kinds of services. The top of that layer can be seen in the following screenshot (just a test, of course, not the final image).

http://users.pandora.be/laplacebara/service-layer-surface.jpg

He wants to use this surface as public open space, which is the second layer. The third layer contains the housing, of which you see a scheme in this screenshot.

http://users.pandora.be/laplacebara/housing-layer-1-floor.gif

The housing layer contains different floors (ranging from 4 to 8, depending on the location). My friend uses a rather (seemingly) random way of filling the different floors with container-like living units. The screenshot only shows one floor, of course. B.T.W.: each rectangle you see is two and a half by 6 metres.

Modeling the complete project takes time, but isn't really a problem. Which means that I probably won't bump into (major) technical problems for the still images.

I am, however, concerned with the feasability of the animation. I know it can be done, I just don't know how to do it.

The animation describes the building proces - the growth, if you will - starting with phase 1 and of course ending with the last phase. Part of the animation is showing how areas of the empty pier get pulled up, forming bubbles, holes, wrinkles and so on, generating space for the services underneath. I did a quick principle test - you can see it here (http://users.pandora.be/laplacebara/animatietest04.mov) (movie, 250K). This part involves again a lot of tweaking, but nothing technically difficult - just a matter of getting the surfaces right.

At a certain moment in time, I need to generate lots of container-like boxes (the housing layer) - but I need to do it over time, and they need to be organized in a certain way (yes, there is a logic). There's a couple of thousand of them, so keyframing them by hand is not an option. And that's where I get stuck: how can I automate this process? How can I start with only one box, and make the others pop up over time?

I have Maya 5.0 Unlimited and Cinema 4D 8.2 Studio Bundle at my disposal for the animation, but scripting isn't my strongest point. I do now a bit of XPresso (C4D), but COFFEE is unknown territory for me, and I have never used MEL (Maya) in an intelligent way before. So I was hoping some of you guys would be able to give me some advice on this.

Thanks in advance and kind regards,
BaRa.

trescool
08-30-2003, 12:58 PM
It might seem a bit simplistic, but I would think that you do not need to animate the position of the phased units only their visability so why not use a display tag. You could then group the phases of construction into groups and apply display tag to whole groups. I use that for phased techincal animations, as a 'quick fix' for complicated constructions. :shrug:

brammelo
08-30-2003, 01:13 PM
Hi trescool,

I thought of that solution as well, but the problem is that I only have a scheme for one of the floors - my friend never designed the other floors (all floors are supposed to have a different layout), which means that, if I were to use your solution, I would have to place a whole lot of boxes pseudo-randomly all by hand. And that's a lot of work, which I am trying to avoid by using an automated generation process.

But I'll keep it in the back of my mind, if other solutions would fail to work.

Thanks :)
BaRa

artemesia66
08-30-2003, 01:24 PM
just to clarify: are you trying to do the layouts automatically, on the fly, or will the layouts be designed, and you're concerned with animating them on? are there "rules" that the layouts follow?

could you use TP/Xpresso to generate the units as particles and control their placement?

brammelo
08-30-2003, 01:56 PM
Originally posted by artemesia66
just to clarify: are you trying to do the layouts automatically, on the fly, or will the layouts be designed, and you're concerned with animating them on? are there "rules" that the layouts follow?

could you use TP/Xpresso to generate the units as particles and control their placement?

Hi Artemesia66,

There isn't a "designed" layout. The boxes are restricted to a grid and to certain areas, but within those - literal AND logical - boundaries, they can be placed wherever you want. The layout above (image in the first post) is just one of the possible results of the internal logic.

And yes, I think positionning the boxes with TP is an option. The thing I worry about is the fact that they shouldn't bump into each other. As long as they all follow the same direction (x, y or z), they will not intersect each other. But when they can be oriented along either x or z (which is the case), you have a problem because they WILL intersect - well, they will intersect if you use a regular grid of particles. So you need either particles or boxes with some kind of "bounding box" logic. Any chance you would know how to implement that logic?

Thanks,
BaRa

artemesia66
08-30-2003, 03:27 PM
hi brammelo,

i know pretty much how i'd do it in action script (flash), but i'm not as up on how xpresso uses variables (does it?). i don't know if you know any other "programming" languages, but in action script i think what i'd do is: make an array for each quadrant, and keep track of the xyz dimensions of each object(particle), and a running total of the current max x,y and z positions available within the array/quadrant. then put a check at the beginning of each iteration to see if the quadrant is full. for example: say a quadrant is 36x36x36m, then for each particle/unit generated, you would store its x(6), y(2), and z(2) dimensions, and you would place the first one at x=0,y=0,z=0, and set the quadrant max values to x=6, y=2, z=2, then for the next particle, you would increment it's placement up by the max value(s) depending on which direction the next one is placed in, so either to x=6,y=0,z=0, or x=0,y=2,z=0, etc, then add this units dimensions to the max value.

does this make any sense? i'm not even sure if it's possible in xpresso, but i'm off to a wedding now (not mine), and i don't have time to check it out. if some of the (much better) programming brains on this forum haven't helped you out by tomorrow, i'll try and have a look at it.

of course, you might decide that it's easier to build them by hand, or using jenna, than to proceed with writing this xpression.

good luck.

Per-Anders
08-30-2003, 09:24 PM
hello, well we have a simple xpresso setup for you here.

we being both myself and srek. sreks example is called xbart2, and mine is called orderedappearance.

i've put in a remark in my xpresso network exaplining what to do to add your own objects to teh object list node and jsut put them there in order, then tweak the parameters on the aparator null (just click it to get the parameters up). sreks version makes the objects appear, mine makes them fade in (and you need to put display tags and activate visibility on them on your blocks, but that can be done by multiselecting all objects that need the tags, choosing to add the tag, then multiselecting all those tags).

the zip file containing both scene files. good luck and i hope that this helps

http://www.peranders.com/c4d8/samples/c4d/bart.zip

brammelo
08-31-2003, 12:16 AM
Thanks Per, Thanks Björn, I'll give it a go tomorrow (it's too late now, need to spend some time with a certain lady :) ). I'll let you know if it worked.

Cheers,
BaRa

brammelo
08-31-2003, 01:53 PM
Hi Mdme_Sadie, hi Srek,

The expression Srek made does exactly what it's supposed to do, but it seems that the logic behind the placement of the containers (in the image above) is a bit more complex than I thought. With Srek's system, they are perfectly distributed, but there are two problems: (a) they don't stick to the edges of the zone in which they are placed and (b) there's no optimalization system - there's a rather low concentration of cubes, and they don't "touch" each other enough.

I have been thinking about some kind of placement along a polygon perimeter, randomly using X and Y orientation, and using that orientation to exclude certain particles from the generation system. But that would involve quite a lot of testing, for which there is unfortunately no time.

B.T.W.: it would be handy if we could generate geometry with XPresso. I know COFFEE can do it, so there IS a way of doing it in C4D, but it would be so much handier if it also could be done in XPresso.

The fade in expression is equally great, and will be of great use. Right now it seems like I will have to place miriads of cubes by hand, but in the long run I will be able to re-use sets, so it won't be that hard to do. It'll work :)

So: a big "thank you", bowing included, to all of you who helped me out of this mess. :)

If I ever get to finish this monster, I'll post the results right here.

Thanks and regards,
BaRa

AdamT
08-31-2003, 04:00 PM
You might try using Chestnuts or Ditools to speed up the placement. Paul's Surface Painter is another possibility.

artemesia66
08-31-2003, 08:29 PM
wow. guys, thanks for the files. i learned a TON looking through those. ( a wee bit more commenting of code next time would be very helpful ;) )

relating to the wandering logic in my last post: you can obviously place the cubes at an xyz coordinate as an extension of the code you posted, but how would you retain the information about the coordinates of already placed cubes from the previous frame. In a nutshell: is it possible/what's the best way to store a variable from frame to frame (since the expression executes every frame). i thought that perhaps you could put a user data field on a null and treat it as a var, but is there a better way?

brammelo
09-01-2003, 10:34 AM
Originally posted by AdamT
You might try using Chestnuts or Ditools to speed up the placement. Paul's Surface Painter is another possibility.

Hi Adam, it's indeed a solution for rapid placement of duplicates, but those plugins all have one drawback (for this situation): there's no intersection detection. Except perhaps Surface Painter, which I never tested, but I think Surface Painter won't let you paint grid-wise - or will it? Would be great if it could. Think I'll have to send Paul an email.

Thanks for the feedback :)

Cheers,
BaRa

brammelo
09-02-2003, 03:37 PM
fast testing ....

http://users.pandora.be/laplacebara/animatietest05.mov

Thanks Srek and Mdme_Sadie :)

artemesia66
09-02-2003, 04:01 PM
looks great. :)

CGTalk Moderation
01-16-2006, 12:00 AM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.