Table Of Contents May 2007
Page 3
Editors Notes
Page 5-10
Interview with “Willie Stevenson” Game Producer by Thomas Pasieka
Page 11
Prize Fight II Announcement - Join the Challenge!
Page 12-16
Basic Modeling - An Arcade Turbo Joystick by Bram van Gerwen
Page 17-18
Maxon’s “Mograph” at NAB - by Will Frazier
Page 19-22
Pool Table Top Tutorial by Thomas Pasieka
Page 23-28
Review on Maxon’s “CINEMA 4D R10” by Mark Gmehling
Page 29-34
Modeling a “Kiwi” Part 1 by Brian Harrison
Page 35-40
Cup of C.O.F.F.E.E Part 11 by Rui Batista
Page 42-43
Frequently Asked CINEMA 4D Questions
Page 44-51
Best of CINEMA 4D Gallery
Page 52
Contact Information
Editor Notes May 2007
Hi there Attackers!
ADVERTISING WITH 3D ATTACK
Summer is almost here, and I can't wait. The weather here in Michigan, USA has been just horrible. One day it looks like we may have a warm sunny day, then it decides to pull the old switcheroo on us. We even had snow in mid April. GO FIGURE!
If you would like to advertise with 3D Attack send us an e-mail requesting our media kit and rate card. 3dattack@3dattack.net
That's what we get for living on a peninsula in the Great American Mid-West! Really though, I'm looking forward to summer as it always brings happy faces and good times. Nothing like having BBQ with family and friends while sipping on tall glasses of iced tea! As for 3D Attack, we're still plugging along and looking forward to what the CINEMA 4D community will bring over the next days, weeks and months. We are truly blessed to be a small part of such a great group of artists. Without your dedicated support we couldn't be doing what we do. So, give yourselves a big pat on the back! YOU DESERVE IT! KEEP ON ATTACKING!
CINEMA 4D VIDEO TRAINING ICS-VERLAG are now offering a wide variety of training DVD's for CINEMA 4D. Although they are in the German language, these DVD's can be easily followed by those who are not native German speakers. The DVD's are priced at a fair 29,90 EUR. If interested please visit: http://www.ics-verlag.de/02fa10988a0f10e01/index.php
GOODIES All of your goodies for this and previous issues of 3D Attack - The CINEMA 4D Magazine can be found here: www.3dattack.net/goodies/
Contact Information: 3D Attack 158 S. Saginaw St. Chesaning, Michigan 48616 - USA E-mail: 3dattack@3dattack.net
TUTORIALS If you have any questions or comments regarding the tutorials within the magazine, please feel free to express them on or CINEMA 4D discussion forum at www.3dattack.net CALLING ALL WRITERS If you have a knack for writing and would be interested in writing tutorials and/or articles for 3D Attack, feel free to drop us an e-mail at 3dattack@3dattack.net net for more information.
modo meets Cinema 4D
As a Cinema 4D user you know the power of Cinema 4D to create great images. modo is an excellent tool to use in conjunction with Cinema 4D, as it provides a unique blend of modeling, painting, and rendering functionality. Giulio Zanardi of Architeturra3D in Italy used modo in combination with Cinema 4D to create a stunning visualization of large mountain chalet. We invite you to see how modo can supplement and expand your software toolset for whatever your 3D projects may require.
Visit www.modo3d.com for a gallery of images and to get your own 30-day full featured trial of modo for your Mac or PC.
Images used by generous permission of Giulio Zanardi of Architeturra3D modo is a trademark of Luxology LLC. CINEMA4D is a trademark of MAXON Computer GmbH
Interview with Game Developer “Willie Stevenson” By Thomas Pasieka
Thomas: Hi Willie. Why don’t we start with you telling us a little about who you are and what you do? Willie: Well, my name is Willie Stevenson, and I’m a 36 year old Television and film producer (12 years as Producer.. started as editor). I own Silverback productions with my wife who is also a producer. I always wanted to make a game. I have big MMO (massive multi-player online) ideas, but thought I should start small...Silverback Productions. Investigated the Game industry for 2 years, (Went to Austin Texas, the epicenter of game the industry) to talk with people and see how Indie companies were doing it I used to produce and direct for a big Canadian production company called Salter Street. I was a producer on LEXX, a silly sci - fi show with lots of CGI effects, as well as lots of other comedy and kids shows. Then we started Silverback and we went small. On any given project we have 6 - 12 people working for us. We have all our own gear and edit from suites in-house. We do TV shows for quite a few channels. Only problem is, I find TV production BORING! Games are much more fun. I don't watch TV myself, but I play a lot of games. I tried the Torque game engine, but got frustrated. Someone on CGtalk forums suggested Unity. I tried it out for a year and thought I would make a go of it.
We have an in-house programmer named Daniel Brauer who is a Student of computer science. Thomas: And that's the reason we are having this interview. Games! So why don't you tell us what you are doing in that direction? You mentioned Unity! Willie: I love the workflow from all creative programs (Photoshop, Unitron, CINEMA 4D and Sound Design) in Unity. I have never seen that in other programs, plus I'm a Mac guy. I called David Helgason up and told him my plans for MMO. He said start simple and that Unity would not be truly MMO friendly for a while. I then met a very successful game distributor who told me to start with a simple kids game and he would sell it. So, we came up with a concept which originally starred a Rat named Chucky-fuzzy. The distributor told us to replace the rat with a puppy. That’s where Kranky the puppy comes into the picture. We then wrote a long story about Ben, a boy in a wheelchair, who had Psychic powers and commu n i ca te d w i th Kranky via Magic "Lithode" crystals. Kranky helps Ben solve mysteries and go on adventures.
Interview with Game Developer “Willie Stevenson” By Thomas Pasieka
Thomas: So it's a game for kids only?
Thomas: Do you think CINEMA 4D is capable of creating game content? Are you satisfied? Where does it need improvement?
Willie: Not really. It’s made so kids will enjoy it, or for adults who like a good story and don't need hardcore violence to have a good time.
Willie: Well... For non-Character meshes and animations it’s great. Couldn't ask for more, except the lightmaps that Maya can export. Although C4D has just made huge steps forward in Character Animation, it lost some important abilities when working with Mocap (Sequences).
Thomas: Other than Unity, what software are you and the people involved using? Willie: CINEMA 4D, Maya, Photoshop, BodyPaint, Soundtrack pro (For sound editing),
Also, there are some big FBX compatibility problems which I had hoped to see resolved by 10.1, but didn’t. Another problem, Unity doesn’t seem to be able to deal directly with JOINTS. We hope to see both of these problems fixed soon. Once MAXON and Unity fix the wrinkles that still exist they will make a very powerful combo. Thomas: What are Lightmaps. Can you explain that for our readers?
Blender (for some models), Motion builder to work around current C4D FBX problems and Cactus Dans suite of CA tools. We are also using Filemaker to attempt to stay organized (Failing so far), and Final Draft (a professional screen writing software to write the story and cut scenes). C4D is at the core of our pipeline.
6
Interview with Game Developer “Willie Stevenson” By Thomas Pasieka
Willie: Well, when doing textures we usually bake the lights in C4D onto a fairly low-res (1024x1024) texture that gives us a sense of light. Then, within Unity, we apply detailed diffuse maps that are repeated textures to make the details look good.
Willie: If we go according to schedule we are looking at a delivery date of October 5, 2007 in order to make it for Christmas 2007 sales. We will do everything in our power to make that happen, although some days it looks like a frightening mountain to climb!
Thomas: You said Maya is able to export lightmaps. Is that possible with C4D at the moment?
Thomas: I bet! That's a pretty tight deadline. This leads me to my next question...is it hard to find people in the C4D community that do low poly/ game art?
Willie: Well it’s not quite the same, but you can fake it in C4D. I am not familiar with how Maya exports the lightmaps, but the resulting docs are more useful and versatile according to Nicholas at Unity.
Willie: We have internal modelers who needed to adjust from high-poly TV meshes, but they are adjusting and learning pretty fast.
Thomas: Thanks for clearing that up. How about texturing? Do you use BodyPaint at all in this production?
We also placed a help wanted ad on CG Talk, as well as other forums, which brought us to you, Thomas Pasieka (Tank of 3D Attack), who not only does some great meshes for us, but connected us to some other modelers, including Chris Montesano and a fantastic Character Modeler, Rigger and Animator; Sebastien “Fluffy” Florand.
Willie: Yes. Almost all of our meshes have used BodyPaint to make game friendly texture maps Thomas: BodyPaint seems to be very common when it comes to texture maps for games. Many people and companies use it in game production. What do you think makes BP so attractive?
We were so impressed with Sebastien that we gave him our most important character “Kranky” to model, rig and make dozens of animation loops for.
Willie: It’s intuitive use and painting directly onto a mesh with virtual spray paint or brushes. There is an extremely nice workflow between C4D, all other major 3D applications and BodyPaint. It also has some great new features with pelts.
Thomas: Who is this amazing guy named Thomas (Tank)? Just Kidding!
Thomas: How long will it take you to finish this game?
7
Interview with Game Developer “Willie Stevenson” By Thomas Pasieka
Willie: He’ll do anything for $20!
Willie: Budget, a plug-in by Chris Montesano is a must have. You can easily make it a permanent part of the C4D GUI. It really helps us to keep an eye on the poly-count, or below the magic number of 4000. This is the sweet spot for more complex models.
Thomas: Thanks for the flowers! So, do you think it takes special skills to do Low Poly/Game modeling? What’s the difference between High Poly and Low Poly modeling? Willie: Well for non bone animated meshes one has to use every polygon wisely, often using 2D texturing tricks or bumpmaps to make details that you would normally just add more polys to.
Thomas: Are there any plug-ins or scripts you would like to see in the future? Or maybe, is there anything you would like to see MAXON implementing?
I wouldn’t say special skills are required, but different skills. You have to know what you are doing when it comes to low poly game art.
Willie: Well a good return to Mocap workflow in C4D would be great (that was lost with Release 10). And of course a fix for all the funny problems with the FBX export and native C4D/Unity conversions that exist. It used to be seamless and one click!
Thomas: Do you use any special plug-ins or scripts that help you in that area?
Thomas: Have you had contacts to MAXON or the developers of UNITY during this process? Willie: MAXON, not directly, but some of my modelers and animators have close ties with MAXON Q&A. With UNITY, yes. David Helgason and Nicholas Fancis have provided constant, direct support (a real privilege as they are extremely busy). They have also connected me to Lars “Kroll” Kristensen who joined the “Ben and Kranky” payroll as of April 16th. Thomas: I can only agree with you. The guys from OTEE (Unity) are some of the friendliest people I’ve met. Special greetings go out to David and Joachim. Any other sites or resources you visit or can recommend?
8
Interview with Game Developer “Willie Stevenson” By Thomas Pasieka
Willie: 3D Kiwi (Nigel) over at C4D Café has some excellent tutorials that have been of great help. I highly recommend his BP DVD. 3D Attack, C4D Portal and CG Talk are on my daily visit list. It was CG Talk that led us to you and 3 other great artists! I must also mention that 3D Attack and C4D Portal are loaded with great tutorials as well. Thomas: Yes there are a lot of great resources within the C4D Community. Do you have any advice for people who are interested in getting into game modeling? Willie: First, the ideas for the games are the easy part. The level of effort, organization and the follow through to make an enjoyable (sellable) game is another story. Those are the things that will make or break you in this business. Advice for game modelers? Get an indie Unity license if you have a Mac. Try stuff out; make assets for amateur game creators or for modders. The Unity forum has a section that is called “Collaborations” and there are always people who need models made for free. This is a great place to practice and get feedback. This enables you to learn to make great game assets without the worry of wasting game developers precious money before learning the ropes. Thomas: Thank you very much for taking the time to answer my questions. We are eagerly waiting for the release of “Ben and Kranky”. Any last words of wisdom you would like to share with our readers? Willie: There are a lot of folks out there who dream about making games, but don’t realize how possible it is with CINEMA 4D and Unity. The indie license for Unity is quite inexpensive and you can try it FREE for 30 days. It’s much more user friendly for beginners than Torque, if you have a Mac.
9
Interview with Game Developer “Willie Stevenson” By Thomas Pasieka
Ben & Kranky Game Overview
When you make the decision to create a game, have a simple concept. Take a simple concept and get it right! After getting a simple project right, then think about moving on to the more ambitious ones.
This game is the first chapter of the adventures of Ben the boy genius and Kranky the puppy. This dynamic duo sets out to uncover evil, solve dark mysteries and foil nasty villains… and they do it all with style. Ben is an eight year old brain stormer who doesn’t let his blindness or the fact that he is confined to a wheelchair hold him back as he can more than make up for it with super psychic powers and a brain like Einstein's. Kranky is a fearless little mongrel who likes to get his paws dirty and get into the action. If Ben gets an idea, Kranky will make it happen…. As long as he can eat a lot of stuff along the way.
Thomas: Thanks again for taking time out for our readers. It’s been a pleasure to talk with you! Willie: Thank you for your interest in our project!
Ben figures out how to find each clue with powerful dream visions and communicates to Kranky through the ancient and magic Lithode Crystals that they wear around their necks. Kranky wastes no time getting busy finding the clues, searching for the bad guys and putting all the pieces of the puzzle together to bring them to justice. Did we mention that he likes to eat? In this first title we learn how Ben and Kranky first meet and learned how to work together to uncover the evil workings of the greedy scientist Doctor Darkhart. In sequels, we will join Ben & Kranky as they travel the world uncovering wickedness and… eating stuff. This will be a 3-d adventure mystery puzzle for kids ages 7 and up. William Stevenson: TV/Film Producer/ Director (15 years of success) that is doing his first game.
The “Ben & Kranky” Team: Willie Stevenson Lars “Kroll” Kristensen Daniel Brauer Ed King Charles Jannasch Colleen Shannahan Matt Goodmanson Sebastien (Fluffy) Florand Tim LaFleur Thomas (Tank) Pasieka Chris Montesano Victor Garen Rees Nicholas F. And David H. Cactus Dan David Johnson
10
Designer/Producer/3-D Artist Programmer Programmer Programmer Writing/Concept Quality Control Character Design Character Modeling/Rigging/Animation Modeling/Character Rigging/Animation Modeling and 3-D Pipeline Co-Ordination Character Modeling Object Modeling. Nature Modeling I-chat Unity support Plugin Support Sound/Music Design
Basic Modeling - Arcade Turbo Joystick By Bram van Gerwen
The arcade is an old but great joystick, if you were around in the MSX days you probably know what I'm talking about. I thought this will make a good object for a basic modeling tutorial, it's shape is easy and the materials are simple as well. So let's begin already! We'll start off by modeling the base of the joystick. Unfortunately we don't have any good reference material from the sides of the joystick, so we'll have to use the few perspective photographs we can find on google. I've added one of them in the reference folder. So by looking at the picture we can make an estimate of the dimensions our objects.
02
tweaks. I made the tangents of the top and bottom point longer to make a smoother rounding. Then as you can observe I've changed the orientation of the points left and right of the top point so that they point exactly at the points below them, creating a straight line there instead of a rounding. From what we can see in the reference picture we now have the outline of the joystick base.
The base of the joystick will be modeled with splines and a NURBS object. Switch to Top View (F2) and select the Draw Linear Spline tool. Draw a spline like in Picture 1 with a total of 8 points, the arrows are for the next step.
Rename the spline to 'Middle'. Duplicate the spline, name it 'Top' and set its Y position to 30 in the coordinates manager and apply. Duplicate the spline again, name it 'Bottom' and set its Y position to -38 and apply. The splines should be arranged accordingly in the object manager, this will ensure that the NURBS work correctly in the next step. Create a Loft NURBS object and rename it to 'Casing'. Set its Mesh Subdivisions U to 67 and its Mesh Subdivisions V to 6. Now select the three splines and drop them into the NURBS object. The loft object pulls a skin over our spline hierarchy. Select the Top spline, go to the coordinates manager and set the Size menu to Scale, for all three axis fill in a scale value of 0,7 and apply. Then select the Bottom spline, use a value of 0,9 for all axis to scale this one down and apply.
01
Select the points at the green arrows and use the Soft Interpolation tool (in the Structure - Edit Spline menu). Now select the points at the pink arrows and use the Chamfer tool with a Radius of 18 and apply.
In top view you notice that the scaling has kept the edges of the scaled spline in a reasonably equal distance from the original outline, except for the top rounding. Select the top point of the bottom spline and move it up a bit until the line has an equal distance to the rest. The Top spline is scaled down further than the bottom spline so on this one we need to select the three points that
Chamfer is handy to create round corners while maintaining the orientation of the main lines. Also use the Chamfer tool on the points at the green arrows but this time with a Radius of 4. Select the points at the yellow arrows again. We need to tweak the tangents a bit to get the shape right. Look at Picture 2 to see the tangent 12
Basic Modeling - Arcade Turbo Joystick By Bram van Gerwen
make up the rounding and move them up together. When you move the three points up you'll notice that just moving them isn't enough, just grab the Scale tool and drag the mouse in the viewport to scale the point selection down a bit and get the correct equal distance from the outline. Reference in Picture 3. 04
the underside of the joystick too with the bottom spline, of course putting its duplicates at the bottom of the hierarchy. Let's move on to the stick. Switch to Front view to draw the spline like in Picture 5. I started with just placing the points in Linear draw mode, then I gave the three selected points Soft Interpolation and dragged the tangents to the right positions. Try to put the lowest point just a little below the
03
We need another spline in the middle to make the slopes straight. Duplicate the middle spline and name it 'Middle 2', place the duplicate between the top and middle spline, set its Y position to 2,3 in the coordinates manager and apply. Now we need to make the cap edges smooth. There is an option to round of the cap edges in the loft object attributes but we can't use that on this object as it will just point the rounding straight up.
05
We'll jut use two extra splines to make the rounding. Duplicate the Top spline and name it 'Top 2'. Place Top 2 above the Top spline, set its Y position to 30,6 in the coordinates manager and apply.
surface. Create a Lathe NURBS object and drop the spline into it. Go to the attributes of the spline and set its Intermediate Points to Natural, this will give the object some better subdivision arrangement. Now all you need to do is set the Z Position of the Lathe object to -17 and apply.
Also use the Scale tool to scale it down just a little bit. Duplicate Top 2 and name it 'Top 3'. Top 3 must be placed above Top 2 in the hierarchy and remain on the same Y position. Use the Scale tool to make Top 3 even smaller than the rest. Picture 4 shows you how far I scaled them.
We can make the top of the stick using the same method. Switch to Right view to draw the spline as in Picture 6. The two points at the arrow are to be given a slight chamfer Radius 0,6 to get rid of the sharp edges. Because we created the spline in Right view it is already in place, so all we need
If you watch the perspective view while doing this you can see when you add Top 3 and scale it down that the hard edge disappears completely giving us a clear surface. You can now round of
13
Basic Modeling - Arcade Turbo Joystick By Bram van Gerwen
Select the Extrude Inner tool, set its Offset to 3 and apply. You can Inner Extrude again by dragging the mouse in the viewport, then moving the selection down a bit to create the depression in the button. I used two inner extrudes to get a better rounding. Rename the HyperNURBS object to Button to finish the object. You might want to change the Y position a bit according to the height of the stick object.
06
With the button object selected go to Objects -> Modeling -> Instance. This will create a duplicate of the object. An instance object mimics any change made to the original object, this is handy for keeping your document size low as it only has to store the information for one object in the file. Set the Y position of the instance to 35, the Z position to 107 and apply.
to do is create a Lathe object at Z position -18 and drop the spline into it. Set the Intermediate points of the spline to Natural and change its value to 6 cut down on the subdivisions. Select the two lathe objects and group them, name the group 'Stick'. So far you should have a result resembling Picture 7. Let's create the buttons now. Create a Cylinder, set its Z position to
Create a Tube object, set its Inner Radius to 22, its Outer Radius to 32, its Height to 16 and its Height Segments to 2. Then set its Y position to 31, its Z position to 107 and apply. Make the tube editable and use the Loop Selection tool to select the loops like in Picture 8. Now use the Subdivide
07
08
-17 to line it up with the stick, alternatively you can use the Transfer tool and click on the stick in the viewport to move the cylinder to the sticks position. Change its Radius to 23, its Height to 20, its Height Segments to 3, its Rotation Segments to 8 and its Y position to 215. Make the cylinder editable and use the Optimize tool. This will make sure the caps are connected to the rest of the mesh.
tool, set it to Subdivisions 2 and make sure the HyperNURBS subdivide option is enabled and hit apply. The joystick is finished and we can start on some simple materials. Create a new material, put a red color in the color channel at full strength, set the Specular channel to Width 45 and Height 100. Then Enable the Environment channel, load a Fresnel shader into the texture field there, set its Mix Mode to Subtract and its Mix Strength to 37.
Create a HyperNURBS object, use the Transfer tool to move it to the cylinders position and then drop the cylinder into it. Switch to the Polygon tool and select the polygons on top of the cylinder. 14
Basic Modeling - Arcade Turbo Joystick By Bram van Gerwen
This will give it some extra shine. Drag the red Material to the Button object, you'll notice that the instance of the button will also become red.
Select the Casing object, go to the caps tab, set the Type to Quadrangles, enable Regular Grid. Now make it editable, unlike with primitives the caps are now actually separate objects placed as children in the hierarchy.
Duplicate the red material. Make the color of the Duplicate near black, and enable the Reflection channel. Set the reflection brightness to 28. Drag this material to the Tube object and the lower lathe object of the stick object.
Select the casing object and its caps as well and use the Connect tool. Now a new object will appear in the object manager, delete the old casing object with its two children and rename the new object to Casing. You can delete the selection tags behind the object as well.
Now for the more bumpy matte material. Create a new material, set its color to dark grey (70 or 80 percent black). For the matte material a more washed out specular should be better, so set the specular channel to Width 80 and Height 20.
witch to a side view, use the Rectangle Selection tool, disable 'Only select visible elements' and make a selection of the full top plus the middle rounding like in Picture 9. Then use the Set selection tool.
Now enable bump channel, set its Strength to 20 and load a Noise shader into the texture field. In the Noise properties set the Global Scale to 20.
Deselect the tag in the object manager and use the Invert tool (Selection -> Invert), now we have the underside selected, use the Set Selection tool again to save this selection as well. Now we can assign different materials to both selections.
Drag the material to upper lathe object of the stick, click on the texture tag behind it and set its Projection to Cubic. Select the Texture Axis tool and scale the cubic projection down a bit to 33, you can see this in the coordinates manager.
09
15
Basic Modeling - Arcade Turbo Joystick By Bram van Gerwen
From the material manager drag the red and the matte bump material to the casing object. Click on the material tag for the matte black, set its Projection to cubic and drag the selection tag we made for the top to the Selection Field. Now click the red material tag and drag the selection tag for the underside to the Selection field. If you render now you can see that the matte material needs to be scaled down a bit with the texture axis tool to get the bump a bit smaller. Do this until it is near the size of the bump on the stick. The Arcade Turbo is finished now. Well, I'll leave the cable up to you haha. Final result with some extra work can be seen in Picture 10. For reference you can always open the 'ArcadeTurbo.c4d' file. I hope you've learned something from this tutorial. For questions please visit the forums. Thanks, Bram
10
16
MoGraph at NAB By Will Frazier
This past weekend, I had the pleasure of attending the post NAB classes being held by MAXON USA. The schedule touted 2 days of intense CINEMA 4D training with a focus on MoGraph in the second day. With Dr. Sassi at the helm, this promised to be a very rewarding experience.
Paul (Babb) and I worked the room to keep the confused look off people's faces as things such as placing textures on the built-in selections of an Extrude NURBS and Set-Driven Keys were covered. I even spent a few extra hours after class with one of the students helping them understand many more basic of the basic concepts in CINEMA, so that they might get more out of day 2. The truth is, I do really enjoy teaching, but that wasn't the reason I came, and I left day 1 hoping that day 2 would prove to be more rewarding.
In total there were 10 students. 4 of whom were at an intermediate level, 3 had a decent amount of experience and a strong grasp of the application, and 3 were very, very new to CINEMA 4D.
Day 2 was focused all around MoGraph. Again, due to the afore-mentioned disparity, we did have to spend more time discussing the basics of the module than I would have liked. However, once we got going the class flowed much better and we got through most of Dr Sassi's curriculum. I wouldn't say that I learned any earth-shattering new techniques, but I did leave the class with a much better understanding of the Delay and Shader Effectors, as well as the uses for the Matrix Object, and Mulit-Shader. The prepared example projects were interesting and well put-together and I left day 2 feeling more confident inside MoGraph. I got rather lucky I think, as I am fairly well versed in the Random, Inheritance, Step, and Sound Effectors, and have used the Tracer Object a few times, so the material we covered was almost exclusively new ground for me, though I would have liked to have gotten in to the Group Effector, and a discussion on achieving different results through varying effector ordering.
It was from this great disparity of skill level that the class most suffered, as we had to spend a great deal of time on the most basic of concepts. This left the newer users scrambling to keep up and some of the advanced users hungry for more. Now, don't get me wrong, I am all for helping out people who are new to CINEMA. In fact, the first day,
Overall, I would say the experience was a positive one. Yes, it would have been nice if the class were full of people at relatively the same skill level, but I am not holding any grudges about that.
I spent much of the time explaining to a few of the less-experienced users around me many of the concepts that were being shown.. acting as a second 'floater' to help keep the class moving forward.
I recognize that classes such as these are new territory for MAXON. Paul told me that they have just recently hired and educational director and that this initiative would grow and evolve. I have no doubt that by next NAB there will be at least a 17
MoGraph at NAB By Will Frazier
couple of tracks available allowing new users to really get a firm grasp on the basics, while seasoned users will get a chance to hone their skillset.
Who knows... maybe someday it will compete with the likes of Photoshop World. - Will Frazier
Dr Sassi is an effective teacher, with a wealth of knowledge at his disposal, and Paul Babb was very approachable and helpful. This first outing may have been a bit shaky in some regards, but it was still worth it overall. I have been waiting for something like this for years, and I look forward to seeing this education program at MAXON evolve.
18
Modeling A Pool Table Top By Thomas Pasieka
I have been browsing through the CINEAM 4D forums lately. I that is nothing new or exciting, but I came across a thread in which they were talking about on how to create a Pool Table.
01
I did a little bit of research on other sites as well, Maya forums, 3D Studio Max and the likes. What I found was rather confusing. A lot of people are having serious issues with this topic, so I thought I would give it a go and share my experience/ workflow with you. I won't be modeling a complete Billiard/Pool Table, but I will show you my approach on this very topic. In the end you will be able to complete the table by yourself and add additional details that you may need.
Select the top and bottom polygon in your next step. Make sure you are in "Live Selection" mode and that "Use Polygon tool" is activated. I marked those two tools in the screenshot (Image 02).
The problem with creating a Pool Table lies within the 6 pockets themselves. People are having a hard time with that. Sure, if you use booleans you will get what you want, but your mesh will look kind of nasty with all these triangulation's. There is a way to avoid these nasty triangulation's and I will show you how in this tutorial. I am not going with correct measurements here, so in case you need to do a pool table for a job you may want to get the right measures for the table.
02
I am going more by "eye" this time. It's more important that you get an understanding on how to approach this. Ok then, enough talk, let's get down to the nitty gritty.... Let's start with creating a simple cube. Change the size of the cube to the following: X = 400 Y = 10 Z = 200
Since you selected the top and bottom polygon we will make use of "Extrude Inner". Use an offset of "20" like you can see in the attribute manager. Alright, you did good so far.
Keep all the segments at 1. If more detail is needed you can always make cuts on your model. I tend to start in low poly, so to say, and work the detail in later if necessary.
Go into the "Structure" menu on top and select the "Bridge" tool. The top and bottom polygons are still selected so you can "draw/bridge" those two together by click and dragging from top to bottom. What you will get is a hole right in the
This way I don't confuse myself with too many polygons. Keeps it simple. Convert your cube into an editable mesh by pressing the "C" key on your keyboard (Image 01). 19
Modeling A Pool Table Top By Thomas Pasieka
05
03
middle of the cube like you can see in my next screenshot (Image 04).
X=180 and X= -180. The one in the middle is at X= 0 and Z= 80. Duplicate all three Cylinders again. Place those 3 duplicated Cylinders at Z= -80 (Image 06).
06
04
Well done so far. Now let's get to the holes for our table. Create a Cylinder and change its settings to a radius of "10" and a height of "50".
You should have 6 Cylinders placed in your scene. Select all Cylinders and convert them to ONE. Highlight all Cylinders and use the "Connect" command from the "Functions" menu. You can delete the old ones and just keep this newly created object (6 Cylinder as one object). See next screenshot.
Leave the Height Segments to "1" and change the "Rotation Segments" to "12". Switch into "Top View" and place the Cylinder at the following coordinates (See next image). Duplicate this Cylinder twice and place them as you see in the image below. You should have 3 Cylinders placed at the edge/corner of the table. As you can see the left and right Cylinder are at
Create a "Boole" object and place the objects inside, as you can see. Be sure to activate "Create single object" and "Hide new edges". The feature 20
Modeling A Pool Table Top By Thomas Pasieka
07
09
08
10
"Hide new edges will basically create n-gons so you are not distracted by nasty triangulation. However, they are still there, but not visible. This is good as I can clean up the mesh in a much nicer way now. I can make cuts were I need cuts and add additional details that way. Alright, make sure your "Boole" object is active in the Object Manager and hit "C" on your keyboard which will convert the current object to one single object. Now the problem is that we have no "green". Our pool balls would simply fall through the half finished table. Let's change that real quick. Go into "Point Mode" and select the "Bridge" tool again. Start creating "Bridges" like in the following screenshots.
11
21
Modeling A Pool Table Top By Thomas Pasieka
12
14
13
Ok, that's it. As said I won't go into too much detail, but THIS should give you a good start for your own Pool Table. Make additional cuts where you need them and texture your model accordingly. I created a video tutorial so you can see how fast and easy it is to get to this stage. The rest of the table is a matter of cutting and extruding and such. I hope this was helpful! You will find a video of all the steps taken in the goodies folder of this month. Check it out! Thomas 22
CINEMA 4D R10 Review By Mark Gmehling
MAXON released the 10th generation of CINEMA 4D some months ago. I was hoping for a more timely review in combination with CINEVERSITY support, but this was not possible as CINEVERSITY seems not to be ready for reviewing as of yet. Because of this, I’ve decided to concentrate on the software itself.
as; Dynamics, Sketch and Toon, Advanced Render, MOCCA, Thinking Particles, HAIR and MoGraph, keeping CINEMA 4D an affordable professional 3D application. Also, take notice that the new animation system (joints instead of bones/ new skinning tools etc.) are part of the core version too.
I. Marketing II. The box III. New features Interface BodyPaint 3D R3 Mocca 3 Modeling Tools Compatibility IV.Conclusion
II. The Box: 1.) Install DVD: All needed software for installing the package is stored on one DVD. This includes BodyPaint and any modules you have purchased. 2.) Training DVD: More than 6GB of video tutorials in German or English. The "early-bird" German customer unfortunately found only a voucher for the Training DVD when first receiving their package.
I. Marketing: One of the most exciting steps in MAXON’s marketing decisions is the implementation of BodyPaint 3D in the core version of CINEMA 4D. The standalone version of BodyPaint has become an industry standard for UV editing and 3D painting, and is now part of the core version package. MAXON has stayed with the add-on philosophy for the other modules such
The training DVD did eventually arrive, but I found the several weeks of waiting for the German training material a bit annoying as I directly wanted to check out the new functions. When the DVD arrived I was impressed by the quality of the tutorials that were enclosed. The material contained a well-presented and logical introduction for newbies and application switchers. I was also impressed with the in-depth training on rigging, texturing, hair and animation. The training material gave great examples of the possibilities with CINEMA 4D Release 10. The Training DVD, itself, is definitely worth 5 of 5 ATTACK POINTS! 3.) Quick Start Handbook: 233 pages of tutorials about the new release and its modules, this time in four color-print. 4.) Installation Guide: The Installation Guide contains all instructions needed for installing CINEMA 4D on both Win and Mac, module installation, language installation (currently eight languages are supported), registration, updating and uninstalling. Note; a nice little help you will find here is the opportunity to paste all serial information at once from the clipboard when you register. 23
CINEMA 4D R10 Review By Mark Gmehling
III. New features:
The Help Menu is now context sensitive; a feature some of us may be familiar with in zBrush. Just right-click on an item and choose "show help". Furthermore, it is now possible to browse keywords and the index, like you do on the World Wide Web. This because it is now html based.
Over the past months the CINEMA 4D community has been discussing whether or not this latest release is worthy of being called a “major release”. While following these discussions I noticed the character-animation related CINEMA 4D users love the R10 improvements (especially MOCCA 3 and the timeline optimization), whereas the visualization/modeling related part of the community is not as content with R10's new feature list. Let’s take a look into the interface changes and optimizations: 1. Interface: First, I see CINEMA 4D loading much faster than before. As well, its speed is optimized in terms of open-GL display, animation, character animation, browsing etc.
Also, you're able to define the detail level for your search. Of course, the Help Menu can be docked to the view-port, just as every piece of CINEMA 4D can be arranged to your liking.
Secondly, the entirety of the skin has been relaunched and new icons have been designed for all of the tools. CINEMA 4D starts with a new, light colored skin.
One thing I do dislike is that a printed version of the manual is no longer available. Many users like to study the manual without sitting in front of a monitor, and would be open to invest their money into the printed manual that was available in the past.
A dark skin is also available in the preferences. If you’re a lover of the Classic CINEMA 4D skin and icons, you can select this theme as well. Within the CINEMA 4D Community the new icons have been discussed hotly. When you’ve been working in CINEMA for many years, at first site, the new icons are a bit uncomfortable to look at.
MAXON optimized the entire interface for better mastering of complex scenes. Multiple timeline, multiple Object Manager support and the layer system allows for better organization and structuring of large scenes.
The main criticism is the redesign itself. It’s as though the aesthetical side of the redesign is more important than the functional when you look at the color-coding of the new icons.
The filter and search function in the Object Manager offers quick access to nested objects. The whole hierarchical display of the Object Manager is now completely flexible. The user is able to switch between hierarchical, layers, flat, vertical display etc., and even sorting by name.
Nurb icons are the same color as the modeling icons, primitives the same color as splines, etc. In the end, the architecture allows one to adjust the settings to their liking. Following the community discussion on this debated subject, I realized it all boils down to a flavor thing concerning the skin and icons.
Bookmarking has now been implemented and allows the ability to recall Object Manager filters.
24
CINEMA 4D R10 Review By Mark Gmehling
The new layer system is part of supporting a better workflow when you work with large and complex scenes. You are now able to lock, view and disable operators and merge or save layer sets etc.
With the Interactive render region tool (IRR), you're able to define an area in your view-port that gets rendered automatically. This happens as soon as you pause tweaking your settings. Timeline: Multiple Timeline support allows a clearer organization of complex scenes. You can disable certain animation tracks for a clearer view while tweaking curves.
This feature, most of us know from 2D applications, is now supported in your 3D world. Also, an information manager has been implemented to the attributes manager that offers quick access to scene related content such as textures, poly-count, memory usage etc.
The region tool allows easy scaling and moving of lots of keys with one drag. All layer/ filter and search functionalities for the object manager are supported in the timeline too.
Enhanced Open GL allows you to display transparencies, lighting, real time shadows, normal maps, bump mapping and post effects etc. directly in the view-port.
One thing I found uncomfortable, when checking the timeline, was that I had to drag my animated objects in the timeline each time I opened the document. It took some time till I found a workaround. I did this by bookmarking the actual timeline content.
The power of the enhanced Open GL display is only limited by the individual graphics card’s power. 25
CINEMA 4D R10 Review By Mark Gmehling
2. BodyPaint: UV editing: MAXON seems to have heard the community cry for pelt mapping. This new unwrapping method allows defining seams for quite automated unwrapping and is supported within this latest release. Some other useful features, such as aligning UV's and unstitching UV's have been implemented as well. Painting: New in BodyPaint 3D R3 is the ability to paint in 32-bit color depth and editing of HDRI format files. I have noticed a lot of people howling for real-time displacement mapping. In my opinion, it would be nice to have this feature, but there are applications available, at a fair price, that do a great job in this area. That pipeline has been working fine since R9. Even though it would be nice to see displacement mapping implemented, I’m more satisfied in seeing MAXON do what they are doing now, making the badly needed enhancements to CINEMA 4D where it lacks compared to it’s competitors 3. MOCCA 3: With R10 MAXON implemented automatic IK Rigging. A few releases back, character animation simply wasn’t fun in CINEMA 4D. The early MOCCA module was very complex to master and had a lot of people using 3rd party applications; such as Motionbuilder or Cactus Dan’s CA tools inspired by Maya’s rigging concept. It looks to me as though MAXON itself was inspired by Cactus Dan’s tools and implemented a lot of the good things his plug-in offers. The MOCCA module is based on joints instead of bones. Setting up basic IK is quite automated now, and auto weighting is a real big timesaver when it comes to rigging. VAMP allows one to easily transfer rigs to assorted character meshes. Functional muscles are easily set up now. The visual selector is a great tool that allows you to effortlessly set up controls for character rigs.
All in all, experimenting with rigging and animating is now fun. The access to the world of animating is as intuitive now, as the more basic skills of CINEMA 4D already were. 26
CINEMA 4D R10 Review By Mark Gmehling
4. Modeling Tools:
players in professional 3D applications. CINEMA 4D was known as the most intuitive 3D application and easy to learn, but not animation industry standard.
This area is a bit grim within the R10 release. I only see one new feature, the Connect Object Function. This function allows you to combine separate objects nondestructively, allowing them to subdivide and share materials and deformation.
With R10, CINEMA is now able to play ball in the big leagues. Yes, CINEMA 4D has always been famous for its interface and work flow behavior, but with R10 it has finally reached an industry standard in animation, while remaining as intuitive as it has always been.
5. Compatibility: As you may know from previous major releases, you are not able to open a CINEMA 4D R10 file in earlier versions of CINEMA. This is obviously due to the features in R10 that are not supported by pervious releases. A command like "you will lose information x,y,z" and the ability to open the R10 document in earlier CINEMA 4D Releases would be a big PRO while networking with other artists.
The logical feature priorities of developmental steps of animation, character rigging, and workflow, as the places of attack, brought the modeling issues to industry standard with release 9 for MAXON. The Hair module is the best on the market, and I have no doubt the entire 3D community would welcome a stand-alone version with open arms. BodyPaint is now a member of CINEMA’s core, and is the “cross-platform” standard tool for 3D painting. The stability of CINEMA 4D is one of the best when it comes to 3D applications.
IV. Conclusion: In my opinion, MAXON implemented what CINEMA 4D lacks most in comparison to the other big 27
CINEMA 4D R10 Review By Mark Gmehling
I’ve said all this to say, I’m a proud user of CINEMA 4D and am pleased to see that MAXON “KEEPS ON ATTACKING” where it needs to. Without a doubt, this is a milestone release and is worth 5 of 5 ATTACK POINTS!
Download an unlimited-time-period demo version and check the new features:
Minimum System Requirements: Mac OS X 10.3.9 / Windows 2000, XP 512 MB RAM CPU with 1 GHz
CU you onboard and Keep Attacking!
http://www.maxon.net/pages/download/demoform _d.html
Mark Gmehling
Recommended System Requirements: Mac OS X 10.4 / Windows 2000, XP 1024 MB RAM CPU with 2 GHz QuickTime 7.1 DVD ROM drive, hard disk. Depending on your license, Macintosh or Windows only.
28
Modeling A Kiwi - Part 1 By Brian Harrison
Hi I would like to take a moment to just say thanks for reading my first tutorial for 3D Attack. Please feel free to leave me some feedback on the 3D Attack forum: www.3dattack.net. I would be interested in what you liked, didn’t like and what you would like in future tutorials I may write. Ok, let’s get started! This tutorial is going to cover the modelling of a Kiwi I recently made using CINEMA 4D R 10. I will take you through, step by step, on the construction of the model. The body of the Kiwi is made using a cylinder, so that is where we will start. Create a cylinder with a (Height of 200M) (Radius of 150M) (Rotational Segments of 8) and remove the caps (Image 01).
02
the new poly at the top of the cylinder and (Extrude it up 100M) up. Now with the scale tool scale the poly to 220M on the X and Z-axis (Image 03).
01
Ok, now make the cylinder editable and go into polygon mode. Next, right click anywhere in the view port and select (Close Polygon Hole) from the tool list or keyboard shortcut M~D. Now we are going to close the hole on the top of the cylinder so just move the mouse over the top of the cylinder until the top points of the cylinder are highlighted and click the left mouse button (Image 02).
03
Now extrude the poly (50M) up and scale it again this time to 180M on the X and Z-axis. Next, do a third extrude another (50M) up and scale it again this time to 140M on the X and Z axis. And extrude a final time up (50M) and scale it again to 90M on the X and Z-axis and you should have something like this (Image 04 on next page).
Now the top of the cylinder should be closed, we can start to model the neck and head of the Kiwi. As the Kiwi is the same type of shape as a pear that is the shape we are going to make. So select 29
Modeling A Kiwi - Part 1 By Brian Harrison
Unselect the bottom line of points you have selected so you now have three lines of points selected. And again, in the coordinates manager, at the bottom of the view port type. (20) into the B rotation parameter and click apply. (150) into the X position parameter and click apply. Now unselect the bottom line of points again so you now have two lines of points selected. And again in the coordinates manager, at the bottom of the view port type (20) into the B rotation parameter and click apply. (200) into the X position parameter and click apply.
04
(270) into the Y position parameter and click apply.
Now to make this into a more Kiwi like shape we first need to go into a front view with point mode selected. Now take the live selection tool and uncheck (only select visible elements) in the attributes manager and select the points shown in the image. (Image 05)
Now unselect the bottom line of points again so you now have one line of points selected. Again, in the coordinates manager, at the bottom of the view port type (20) into the B rotation parameter and click apply. (280) into the Y position parameter and click apply. Now you should have something that looks like this. (Image 06) We now have the basic shape of the Kiwi, so it’s time to make the beak. We are going to model the
05
Now that we have the points selected we are going to rotate and move the points to their desired locations in the coordinates manager at the bottom of the view port type 06
(30) into the B rotation parameter and click apply. (80) into the X position parameter and click apply.
30
Modeling A Kiwi - Part 1 By Brian Harrison
beak separately, and connect it to the Kiwi once it is finished. Still in the front view we need to select a Spline and draw the beak shape. I suggest the B-Spline and draw out a shape similar to the one in the diagram (Image 07).
polygon object in the object manager on the right hand side of the view port and delete the rounding object and the cap2 object. Now using the close polygon hole method, as before, close the tip of the beak. Now that the basic shape of the beak is complete we need to add a few cuts so that we can add the detail, and so we have enough edges to connect it to the body mesh. First of all, the beak needs to be slightly in front of the body mesh so move the beak so it is something like this (Image 08)
07
Now go back into the perspective view and create a rectangle Spline from the presets, make it editable and scale it down so it is 15M on the X and Y axis in the coordinate’s manager at the bottom of the view port.
08
Now drop the spline that is the shape of the beak, into a Sweep Nurbs then drop the rectangle spline into the same Sweep Nurbs. Now you should have something resembling a long skinny beak.
Ok, now for the cuts. Zoom into the beak, select the knife tool, change the mode to loop mode in the attributes manager and move the mouse cursor over the left hand side and create a cut right around the center of the beak mesh (Image 09 on next page).
We now need to make the head end of the beak bigger so the beak tapers to the end. We do this by selecting the Sweep Nurbs and changing the start cap to (fillet cap) in the attributes manager, which is on the bottom right hand side of the view port.
Now we have a cut through the middle of the beak and we need to select the points. So using the live selection tool in (point mode) and with (only select visible elements) unchecked, go into front view and select all of the middle points you have just created on the beak.
The fillet radius needs to be changed to (8M) that makes one end bigger than the other. We now need to make the SweepNurbs editable by selecting the SweepNurbs and pressing (C).
Now go back into (Polygon mode) and create two more cuts one above the middle cut, and one below the middle cut. Keep the cuts close as this is going to be the crease for the beak. Now go back
Ok now that it has been made editable we need to delete the caps that the SweepNurbs created. You can do this by expanding the SweepNurbs 31
Modeling A Kiwi - Part 1 By Brian Harrison
The time has come now to connect the beak to the body, so in the object manager, select both of the polygon objects, right click and select (connect) (Image 11)
11 09
into (point mode). You now should have something like this (Image 10)
10
Now, go into top view and scale the selected points on the (Z) axis slightly in towards each other. This should create a crease in the mesh that is going to separate the beak. Now, still in (top view), select the knife tool and in the attributes manager enable (snapping) and create a cut right down the top center of the beak. The knife tool should snap to the center gridline to make sure all the new points are all at (0) on the (Z) axis
32
Modeling A Kiwi - Part 1 By Brian Harrison
This creates a new polygon object above the other two. Delete the lower two objects in the object manager and rename the new polygon object to (KIWI). Now, to fill in the gap between the head and the beak. This is very straightforward but first you need to delete the N-Gon that is directly behind the top of the beak (Image 12).
12
13
This is so we can use the (Create polygon) tool in point mode to fill in the gaps. Now that the N-gon is gone we can now go into points mode. Select the (Create polygon) tool by right clicking in the view port and selecting it from the tool list and simply create the new polygons by connecting the dots. Only connect in groups of 4. There are enough points on the head and the beak to create 10 new polygons (Image 13).
14
Once you have created all of the necessary polygons go back into polygon mode and select all the polygons of the Kiwi and right click. From the tool list select (align normals). This ensures all the polygons face the right way. Now for the last part of this tutorial we need to close the bottom of the Kiwi mesh using the (close polygon hole) command. As before, earlier in the tutorial, rotate your view of the Kiwi so you can see the bottom of it. Right click in the view port and select (close polygon hole) and close the hole that is at the bottom (Image 14).
15
33
Modeling A Kiwi - Part 1 By Brian Harrison
Now we need one knife cut down the middle of this N-gon we have just created. Go back into point mode, select the knife tool, change it from loop mode to line mode and create a cut from the back to the front using the points (Image 15) Now just drop the Kiwi mesh into a Hypernurbs. (Image at the bottom of this page). End of Part 1 Be looking for Part 2 Adding Feet, Eyes And Overall Detailing in the June issue of 3D Attack. Brian Harrison
34
Cup of C.O.F.F.E.E - Part 11 By Rui Batista
Here we are in lesson number eleven. As promised, I will present a fully working plug-in in this lesson, with fully commented code. Actually, I will not include much text in this lesson, except for the actual code because most of what you need to know was already explained in the previous lesson. You will see that there are many similarities with the code of the tag plug-in from lesson number ten.
automatically, maintaining proportions. That is exactly what the plug-in does. It is named Propor-
Anyway, I will comment on the whole code, even some parts that were already explained previously. When additional explanations are required, I will interrupt the flow of the code to tell you about them. tional Render Size, or PRS for short. When you choose it, from the plug-ins menu, you will get this dialog (See image below):
Oh, another thing... I will not explain or show the content of the resource files, namely, the files named c4d_symbols.h, IDD_DIALOG_PRS.res and IDD_DIALOG_PRS.str.
At the top you have a display of the current render size and, bellow it, you can set the new render size. When you first open the plug-in, the new render size is the same as the current render size. As soon as you adjust one of the dimensions, if you press Enter (or Tab to move to the next field), the other dimension will proportionally adjust itself.
They were already explained in previous lessons and you will get them inside the required folders of the plug-in that you can get from the Goodies folder. They were created with Resedit, like I explained in lesson number eight and, if you want, you can inspect them with a text editor or opening the IDD_DIALOG_PRS.res file in Resedit.
If you hit Cancel, the render size will remain the same but, if you hit OK, the new proportional dimensions will automatically be set in the Render Settings dialog.
Before moving on to the code, I believe it would be a good idea to explain what the plug-in does, right? Well, I needed to make a simple plug-in that would allow me to include in a lesson but, at the same time, I wanted to make something that would be useful to everyone.
Ok, enough with the chit-chat... on to the code: include "c4d_symbols.h" // you can see what this does in the previous lesson
So, I remembered that one of the omissions of CINEMA 4D is that, in the Render Settings dialog, you can't re-scale the dimensions of your final render, proportionally. Meaning that, if you have your render set to, let’s say, 1200 x 900, if you want to make a smaller render with, lets say, 700 pixels wide, you will have to calculate what will be the new vertical size.
var PLUGIN_ID = 1021121; // this ID is unique, requested from www.plugincafe.com // now, all variables that are used inside the plugin are declared, // except for the ones that exclusive to classes
The same applies if you want a new vertical size and you will have to calculate the new horizontal size. What would be great was if you could simply say that you wanted a new (horizontal or vertical) measure and the other one would adjust itself
var prs_version = "1.0"; var PLUGIN_RES, PLUGIN_PATH, RENDER_DATA, RD, BASE_BITMAP;
35
Cup of C.O.F.F.E.E - Part 11 By Rui Batista
var WIDTH_VAR,HEIGHT_VAR; var TEMP_X,TEMP_Y; var doc,icon_map; var dialog_res,dialog; // ********************************************************* *
}
// this is the first class we define. It will be used to deal with the dialog interface
public: prs_gui(); CreateLayout(); Init(); Command(id,msg); GetContainer(); SetContainer(bc2);
prs_gui::prs_gui() { super(PLUGIN_ID); bc=new(BaseContainer); }
class prs_gui : GeDialog { private: var bc; ContainerToDialog(); DialogToContainer();
The previous method is the parent method. It is named after itself ;-) The first thing it does is to call its super, doing whatever generic stuff it needs to do.
Ok, this is our first stop. I know I have already talked about this in the previous lesson, but it is the first time we really deal with such a thing as private variables and methods.
Then we use the private variable bc to store a new container. Remember all the talk about containers in the previous lesson? Well, we will use our own container to store a copy of the values of the interface elements of our dialog.
Defining a variable and/or method as private means that they are only accessible (and relevant) inside the scope of the class in which they are defined.
It is usually a good rule to store the values in some place safe (and a container is the best choice because it can contain several types of data) because, this way, you can manipulate the data without it messing the interface. When you have all data neatly arranged, you can load it into the dialog.
This means that the variable bc is only accessible by methods of the class prs_gui. By the way, different classes can use the same variable names and they will only use their own variable, not the ones defined inside other classes.
prs_gui::GetContainer() {return bc->GetClone();} // this function returns a copy of the container. prs_gui::SetContainer(bc2) {bc=bc2>GetClone();} // this function stores in bc, a copy of the content of the parameter passed into it.
As we will see, we will define yet another class that will have its own variable called bc. Each class will use its own variable, even if they share the same name. As you can see, we also declare as private two methods. You know they are methods because they don't have a var statement preceding them and they also have opening and closing parenthesis after their name.
prs_gui::CreateLayout() // you can see what this does in the previous lesson { var ret = LoadDialogResource(IDD_DIALOG_PRS,PLUGI N_RES,BFH_SCALEFIT |BFV_SCALEFIT); SetTitle(" PRS v"+prs_version); return ret; }
Now we go on defining some overloading methods (if you want to know what that is, read the previous lesson). 36
Cup of C.O.F.F.E.E - Part 11 By Rui Batista
prs_gui::Init() // this method will initialize all the values inside the dialog { doc=GetActiveDocument(); // we get the active document RENDER_DATA = doc->GetFirstRenderData(); // we get the active render settings for this document RD=RENDER_DATA->GetContainer(); // we get the container of the render settings. Its inside the container that are all the values you define in the Render Settings dialog.
value, meaning a very big integer so, using a float I'm sure it will fit entirely in the variable. Besides, I will be making calculations with those values that involve floating point numbers so it is better off starting out with a float. // now that we have the values we need, we load them into our containers fields bc>SetData(CURR_SIZE_STR,tostring(int(WIDTH_ VAR))+" x "+tostring(int(HEIGHT_VAR))); bc->SetData(NEW_X,WIDTH_VAR); bc->SetData(NEW_Y,HEIGHT_VAR);
WIDTH_VAR=RD>GetFloat(RDATA_XRES); HEIGHT_VAR=RD>GetFloat(RDATA_YRES);
// and now we pass the content of our container into the dialog ContainerToDialog(); }
Ok, time to stop again. We are getting the size of the render, now... but how did I know the name of the parameters (RDATA_XRES and RDATA_YRES)? Well, you can get this information from a few places. For example, there is a file named coffeesymbols.h that reside in your CINEMA 4D folder, inside the resource folder.
The following two methods load the contents of our container into the dialog and vice-versa, respectively. prs_gui::ContainerToDialog() { SetString(CURR_SIZE_STR,bc>GetData(CURR_SIZE_STR)); SetInt(NEW_X,bc>GetFloat(NEW_X),1,16000,1); SetInt(NEW_Y,bc>GetFloat(NEW_Y),1,16000,1); }
In this file - that you can open with any text editor - you will find ALL the names of ALL the accessible data fields in CINEMA 4D, for using with C.O.F.F.E.E. The problem is that none of the names is commented so, it’s a matter of finding out by "approximate name" and trial/error what each name refers to.
I believe an explanation would be helpful at this point. Why did I use the more specific function GetFloat for some cases and the more general GetData for others? Well, the GetData is advisable because it can get ANY king of data, no mater what type it is.
Another way to do it is to do some detective work. Open up the SDK for release 9.6, referred to in lesson four (even if you are using release 10, you should be using the SDK for 9.6) and go to the Reference link. In it, go to the Document link. In the Document link you should find a reference to RenderData. Click it and you will see all the names of the data fields in it.
But, if we want to force a specific type of data, we should use the specific functions (GetFloat, GetInt, GetString, etc).
Or, if you want to be very lazy and you are not in a hurry, go to www.plugincafe.com and ask at the forum ;-)
To set values, inside a dialog, we can't use SetData. Instead, we must use specific commands (SetFloat, SetInt, SetString, etc). Besides, the commands that set numbers - like SetFloat or SetInt - also define the minimum, maximum and step values of a field. Like this:
Oh, I used GetFloat to get a floating point value because of two reasons: the value inside the RDATA_XRES and RDATA_YRES fields is a long 37
Cup of C.O.F.F.E.E - Part 11 By Rui Batista
SetFloat(FIELD_ID,value,minimum, step);
maximum,
RD>SetData(RDATA_RESOLUTION,0); // we set the Resolution list value to Manual RD>SetData(RDATA_XRES,TEMP_X); // we set the Resolution width value to the value set in the plug-in RD>SetData(RDATA_YRES,TEMP_Y); // we set the Resolution height value to the value set in the plug-in RD>SetData(RDATA_FILMFORMAT,0); // we set the Film Format list value to Automatic RD>SetData(RDATA_XFILM,TEMP_X); // we set the Film Format width value to the value set in the plug-in RD>SetData(RDATA_YFILM,TEMP_Y); // we set the Film Format height value to the value set in the plug-in RENDER_DATA>SetContainer(RD); // the container, with the adjusted values, is loaded to the Render Settings GeEventAdd(DOCUMENT_CHANGED); // notify that the document was changed Close(); // we can now close the dialog window break;
The step value is how much the value increases or decreases when the user clicks the arrows of the numerical field. Now, to load the values to a general container (not the specific case of a dialog container) we can/should use the SetData and GetData statements: prs_gui::DialogToContainer() { bc>SetData(CURR_SIZE_STR,GetString(CURR_SI ZE_STR)); bc->SetData(NEW_X,GetFloat(NEW_X)); bc->SetData(NEW_Y,GetFloat(NEW_Y)); } The following is the method that is called when the dialog is displayed and the user is interacting with it. prs_gui::Command(id,msg) { DialogToContainer(); // we get the values of the dialog into our container switch (id) // new we decide what to do, depending on what element of the dialog the user is interacting with. { case BUT_CANCEL: // these are the names of the interface elements, defined when creating the dialog in Resedit Close(); // the user pressed the Cancel button, so we only need to close the dialog window break;
case NEW_X: // the user pressed Enter while in the NEW_X field or just entered new NEW_X field by pressing TAB TEMP_X=GetFloat(NEW_X); TEMP_Y=(TEMP_X/ WIDTH_VAR)*HEIGHT_VAR; // the NEW_Y value is calculated, proportionally... bc->SetData(NEW_Y,TEMP_Y); // ... and loaded into our container ContainerToDialog(); // our container is loaded back into the container of the dialog break;
case BUT_OK: // the user pressed the Ok button so we need to update the render settings values TEMP_X=bc->GetFloat(NEW_X); // we get the value of the new width, set by the user TEMP_Y=bc>GetFloat(NEW_Y); // we get the value of the new height, set by the user
case NEW_Y: // the user pressed Enter while in the NEW_Y field or just entered new NEW_Y field by pressing TAB TEMP_Y=GetFloat(NEW_Y);
38
Cup of C.O.F.F.E.E - Part 11 By Rui Batista
TEMP_X=(TEMP_Y/ HEIGHT_VAR)*WIDTH_VAR; // the NEW_X value is calculated, proportionally... bc->SetData(NEW_X,TEMP_X); // ... and loaded into our container ContainerToDialog(); // our container is loaded back into the container of the dialog break;
PRSPlugin::GetIcon() {return icon_map;} PRSPlugin::Execute(doc) { if(!bc) bc=new(BaseContainer); // if there is still no container, create a new one dialog = new(prs_gui); // allocate a new dialog dialog->SetContainer(bc); // assign it the newly created container dialog->Open(TRUE,-1,-1); // open the dialog. The parameters were already explained in the previous lesson bc=dialog->GetContainer(); // get the container from the newly opened dialog }
default: // well, there are no other possible choices... but its good to make things nice and clean } return FALSE; // report that there are no errors }
The following section of code is new because the menu plug-ins have dialogs that can be dockable anywhere in the CINEMA 4D layout. Their dialog must be refreshed right after the layout is loaded (when you start CINEMA 4D), even if not explicitly evoked from the Plug-ins menu. That is what this method does.
The following section of code is the definition of the plug-in itself. It is very similar to the section of code of the previous lesson. But, instead of defining a ExpressionPluginTag, we define a MenuPlugin. Most of the code bellow requires no comments because it is almost the same as the one presented in the previous lesson.
PRSPlugin::RestoreLayout(secret) { var doc = GetActiveDocument(); // get the active document RENDER_DATA = doc>GetFirstRenderData(); // get the Render Settings from the current document RD=RENDER_DATA->GetContainer(); // get the container of the Render Settings
class PRSPlugin : MenuPlugin { private: var bc; public: PRSPlugin(); GetID(); GetName(); GetHelp(); GetIcon(); Execute(doc); RestoreLayout(secret); // this is the only one that sounds weird... more about it bellow }
WIDTH_VAR=RD->GetInt(RDATA_XRES); // get the render width HEIGHT_VAR=RD>GetInt(RDATA_YRES); // get the render height if(!dialog) dialog = new(prs_gui); // if there is no dialog yet, create e new one... dialog->RestoreLayout(secret); // ... and restore it. }
PRSPlugin::PRSPlugin() {super();} PRSPlugin::GetID() {return PLUGIN_ID;} PRSPlugin::GetName() {return "PRS";}
Finally, we reach the main routine. This is where we prepare all the stuff that the plug-in will need, inside it.
PRSPlugin::GetHelp() {return "Adjust render size proportionally.";}
39
Cup of C.O.F.F.E.E - Part 11 By Rui Batista
main() { icon_map = new(BaseBitmap,32,32); // the plug-in icons have 32 by 32 pixels (the tag plugins have 24 by 24, remember?
find basic structures for all types of plug-ins you can code. For example, the plug-in I present in this lesson, started out by using a duplicate of the file menuplugin.cof
var file = GeGetRootFilename(); if (!file) return; file->RemoveLast(); PLUGIN_RES=new(GeResource,file); // we store the location of the res folder in the variable PLUGIN_RES file->AddLast("res"); file->AddLast("prs.tif"); // we get inside the res folder, locate the file "prs.tif"... icon_map->Load(file); // ...and load the icon
You can also find another folder named XLent Framework inside the examples folder. This one is even more versatile, because inside the same file you have the code for all types of plug-ins. You just have to delete what you don't need and then adjust what is left. Inside the examples folder there are quite a few additional files that are quite useful to dissect. See you on the next (and last) lesson. Until then, keep on attacking, my friends :-)
// you should already know what the following line do because it has been done several times before doc=GetActiveDocument(); R E N D E R _ D ATA = doc>GetFirstRenderData(); RD=RENDER_DATA->GetContainer(); W I D T H _ V A R = R D >GetFloat(RDATA_XRES); H E I G H T _ V A R = R D >GetFloat(RDATA_YRES);
Rui Batista
Register(PRSPlugin); // finally we register the plug-in, making it appear in the Plug-ins menu println("prs v"+prs_version+" was successfully loaded."); // ...and signal it was loaded successfully } And this is it. To check it out, just load the folder from the Goodies into the Plugins folder of your CINEMA 4D. This is the basis of all menu plug-ins so you can use it - adjusting it accordingly - to code any menu plug-in. Besides, I have additional good news. If you download the SDK from version 9.5 (I strongly recommend that you have both SDKs, for 9.5 and 9.6), there is a folder in there, named examples. Inside this folder, there is another folder, named Basic Frameworks. Inside it you will 40
Frequently Asked CINEMA 4D Questions May 2007
Q: I am making this alien slug character and am having difficulties with boning. It has eye stalks, and I am boning them to pose.
7. Now run the subdivide tool over the plane (setting 1 with hn activated) 8. Now you can add your material/texture to the plane
The problem is, after vertex weights are painted, and bones are fixed, the eye part of the eyestalk gets warped and misshapen when I move the bone, or rotate it.
Eventually you should play with the angle settings of the phong tag to optimize the result (I deactivated the angle feature).
A: Try adding an extra bone going from the retina to the pupil of each eye. The additional bone should give the rigidity you desire.
See the results here: http://www.3dattack.net/forum/attachment.php?att achmentid=14045 Q: i have some textures. I need to make a wood material and bump. Reflections are not so big, but the diffusion texture is very high, above 40 Mb. When I render C4D gives me a texture error. How can i fix this ?
Q: Is there a way to restrict the Object Buffer in the Compositing tag to a Selection?I have a plasma display with a Selection set for the Screen. Is there a way to buffer this for tracking/ compositing in AfterEffects?
A: Normally the texture error means that your texture cant be found by CINEMA...make sure you saved the texture in the same folder as your relating C4D file or in a "tex" folder next to your c4d file. (If the sizes of your files or number of polys are too high for your cpu ram C4D will give an "out of memory" message while rendering).
A: No, the easiest way to do what you want is to Split the Plasma's Screen and put the object buffer on that object only. Q: I was just wondering if anyone has any tips on how to quickly and easily make a crumbled paper surface that interacts with lights and shadows in a fairly realistic way.
Q: Is it possible to have an object visible in a render but exclude it from reflecting in another objects texture? I want a mirror with a ball in front of it. I want the ball rendered but not in the reflection. How do I exclude the ball from the reflection of the mirror, is it possible?
A: The easiest way is to use a landscape object, you can adjust the settings to that it looks like a crumpled sheet of paper. But for more realism you can try this: 1. Create a plane the size you want it (height and width only 1 segment !! )
A: Try adding a Compositing Tag to your object and uncheck the Seen by Reflection option within the tag. This should work.
2. Make it editable.
Q: I would like to know how I would go about accessing data about an object from the coffee node. Specifically I want to find out the Size.x,y,z of a Cube object. It's easy enough to find out the position with Object->GetPosition() but I cannot figure out how to access the rest of the attributes. The manual I have doesn't seem to covert this specific detail.
3. Now choose the knife tool and make 10-20 cuts randomly over the whole plane. 4. Randomly select some points and move them up a bit. 5. Now do that again, but this time move the points down a bit.
A: You have to access the object's container to get that information.
6. You can repeat that as often as you like. 42
Frequently Asked CINEMA 4D Questions May 2007
Like this:
A: You need to move the last key one step earlier. (If you want to loop from 0 to 40, you set the last key at 39). Then change the 360 value to 360 - (360/40) = 351.
Code: var bc = op->GetContainer();
That is you have to shave off that last 9 degrees. (one 40th of 360). Set the length of the sequence to 39. Now it will loop smoothly.
var cubesize = bc>GetVector(PRIM_CUBE_LEN); println(cubesize); println(cubesize.x); println(cubesize.y); println(cubesize.z);
If you want to loop an entire scene it is a little simpler. Set the first value at frame 0 ( ie 0 degrees), and the last value (ie 360 degrees) on the last frame. Then all you have to do is shorten the project by one frame.
This of course assumes that op is a primitive cube.
A project can have keys "outside" itself, but a sequence(track) can not.
You can find constants for object data by dragging the data's label from the attributes manager to either the command line, the script manager, or the coffee editor. I hope that was clear, but if not I can post a screenshot or something.
Q: I want to have a camera fly through of a home that I built. What is the best way of doing that. Any suggestions? A: Draw/make a spline through your house. Put a Camera with a Target under a Null. Add a AlignToSplineTag to the Null and animate the Null along the spline. Animate the Target. You can place a AlignToSpline to the Target as well and animate it along a second "Target Spline".
And if you do not have it already, go to www.plugincafe.com and click on "SDK Downloads" to find the coffee documentation. Q: I'm making an emitter follow a spline and want the particles to lay on the spline while the emitter is moving. Do you have any suggestions? A: Using the Thinking Particles Standard Emitter, set particle speed to 0 and move it along the spline. This should work Q: I'm new to Cinema 4D and I tried making a simple animation. It's basically a rotating coin. I have around 40 frames and at frame "0" I have set a keyframe at 0 degree and at the last frame I have set it to 360 degree rotation(X axis), and I have enabled linear cycle looping. My problem is it doesn't loop smoothly from the last frame to back to the beginning. I mean there is slight pause in between the last frame and the first. I want to have a smooth loop with no pauses like the coin rotates infinitely. I was able to do this Carrara 5 though (no pauses).
43
Best of “Cinema 4D” Gallery A monthly selection of inspiring images
Image Name: Digging Artist Name: Matthieu Roussel Country: France Date Created: January 2007 Software: CINEMA 4D Website: www.mattroussel.com
Best of “Cinema 4D” Gallery A monthly selection of inspiring images
Image Name: Today's Arrival (East Tower) Artist Name: Armin Schieb Country: Germany Date: April 2007 Software: CINEMA 4D, Photoshop Website: http://home.arcor.de/drakat
Best of “Cinema 4D” Gallery A monthly selection of inspiring images
Image Name: Nayrah Artist Name: Julian Bouza aka Rhasalgheti Country: Spain Date Created: March 23, 2007 Software: CINEMA 4D 9.5, Poser 6 and Topmod, Maxwell Render 1.1
Best of “Cinema 4D” Gallery A monthly selection of inspiring images
Image Name: Underworld Artist Name: Rudolf Herczog Country: Sweden Date Created: April 10, 2007 Software: CINEMA 4D & Photoshop Website: www.rochr.com
Best of “Cinema 4D” Gallery A monthly selection of inspiring images
Image Name: The Portal Chamber Artist Name: Richard W. Booy (Incarnadine) Country: Canada Date created: April 3, 2007 Software: CINEMA 4D Website: http://excalibur.renderosity.com/mod/gallery/browse.php?username=Incarnadine
Best of “Cinema 4D” Gallery A monthly selection of inspiring images
Image Name: EON - Alternate reality. Inspired by EON, a novel by Greg Bear Artist Name: Mark David Country: Australia Date Created: January 2007 Software: CINEMA 4D R9.5, Photoshop Website: www.mdavid.com.au
Best of “Cinema 4D” Gallery A monthly selection of inspiring images
Image Name: The Art of Noise Artist Name: Jeff Osborne Country: England Date Created: April 2007 Software: CINEMA 4D R10, Photoshop CS2 And illustrator CS2. Website: www.lemongreanade.com
Best of “Cinema 4D” Gallery A monthly selection of inspiring images
Image Name: LiL Red Riding Hood Artist Name: Jacques Pena Country: USA Software: CINEMA 4D, BodyPaint, and Photoshop Created: May 2006 WebSite: Digi9.com
Contact Information May 2007
The 3D ATTACK Team Need to contact us? Got questions?
Thomas Pasieka, CEO 3dattack@3dattack.net Tavy Ann, VEO tavy@3dattack.net Chris Montesano, Site Admin/Developer chris@3dattack.net Rui Batista, Moderator/Writer Rui_mac@ruimac.com Mark Gmehling, Moderator/Writer macling@braincorps.de Darrin Frankovitz dfrankov@gmail.com Bram van Gerwen, Moderator/Writer killbots@mac.com Jamie Hamel – Smith, Moderator/Writer jamie3d@gmail.com Michael Mlynek, Moderator/Writer MichaelMlynek@gmx.de Website: http://www.3dattack.net Plugin Page: http://3dattack.net/shop/index.php?page=10
3D Attack the CINEMA 4D Magazine and all material contained therein are copyright protected. You may not disassemble or distribute any part of this publication without prior written consent from 3D Attack directly. any attempts to do so will be prosecuted to the fullest extent of the law as it applies in Michigan, USA. This applies for both 3D Attack material as well as any named artists ma-
terial contained in 3D Attack publications. Although we read through all the tutorials and proofread them for errors, we cannot guarantee that they are 100% error free and therefore cannot issue refunds based on those errors. Copyright by 3D ATTACK 2004-2007 “3D ATTACK” is a registered trademark. 3D Attack 158 S. Saginaw St. Chesaning, Michigan - USA 48616 Phone: 989-845-3334 E-mail: 3dattack@3dattack.net