Function available in CINEMA 4D Prime, Visualize, Broadcast, Studio & BodyPaint 3D
Modeling the Lamp’s Gooseneck and Switch
Modeling a Gooseneck Guide Object
Switch back to Polygons mode. The circular polygon selection at the top of the Sphere object should still be active. Select the Extrude tool ( menu) and set the Offset value to 135, which will generate a cylinder shape.
Switch to Edges mode and activate the Loop Selection tool ( menu) to create a cylindrical shape as shown in the image below.
The Bevel tool’s default settings and a low Offset value can be used to create a fitting chamfer.
Modeling the Lamp’s On/Off Switch
Fortunately we are not modeling a lamp for real-world production. Primarily, objects created in Cinema 4D must look good - and cheating to achieve the best result is by all means allowed, and even makes our 3D lives much easier. Technically, we would have to model a hole in our lamp into which we would place our on/off switch. However, nobody will ever notice whether or not we actually did this. So, why make more work than is necessary?
Create a Tube primitive and scale and position it as pictured in the image below. Apply the same settings as in the image as well. Make sure the Tube object’s orientation is set to the +Z axis and place it so it slightly protrudes from the Sphere object’s surface.
Transferring Object Position and Rotation
Creating the actual on/off button at the center of the Tube object will be just as easy. First, create a Cylinder primitive and set its Radius value to 5.2, its Height value to 15 and its Orientation to +Z. Make it a Child object of the Tube object (see image below).
This hierarchical grouping lets us "zero out” the cylinder’s position and rotation values in the Coordinates Manager in order to position it at the same spatial coordinates as the tube. This must however be done in Use Object Tool mode. With the Cylinder object still active, set all Position and Rotation values to 0 and confirm your entries by clicking on Apply. The Cylinder object will jump to the exact position of the Tube object.
Scale the Cylinder object so it completely fills the Tube object’s inner radius. Adjusting the Height value will define how far the button protrudes from the Sphere object’s surface.
Another method of transferring one object’s coordinates or position information is the Transfer function ( menu). First, select the object to be repositioned, then select the Transfer function. Drag the object whose position information should be assumed into the Transfer to field. Use the options in the Transfer function’s Options tab to define which parameters should be assumed. Confirm your selection by clicking on the Apply button. The Transfer function can be applied independent of hierarchical grouping.
Modeling the Gooseneck with Generator Objects
As explained above, the lamp’s fixture will rest on a moveable gooseneck that protrudes from the extended section of the lamp base. This can be comfortably done using Generator objects that are controlled via Spline curves.
Switch to the Points mode and select the Linear Spline creation tool (). In the front viewport, create a curve that resembles a question mark and containing multiple points (each point is a click of the mouse). Start by placing the first point within the cylindrical extension we created earlier (see image below).
If the axis symbol is in the way while creating the Spline, press Alt + d to remove it. Press Alt + d again to make the axis symbol visible again when done.
Once all points have been placed, set its Type to Bezier in the Attribute Manager. A Bézier curve offers additional tangents with which the curve can be modified. As you can see, the Spline’s curves have been rounded automatically. Select the bottom two points and set their X Scale value to 0. This will cause the points to lie exactly over one another and each of their tangents to be oriented vertically. Use the same method to set the X Position value for these points to 0 as well. This will result in the beginning of the Spline being centered directly on the cylindrical extension of the lamp base.
Using Sweep Objects
As described in the Generator objects tutorial, Sweep objects can be used to quickly create such items as hoses or cables - exactly the shape we need to model the lamp’s gooseneck.
First, create a Circle Spline primitive () and make sure its Plane option is set to XY in the Attribute Manager.
Create a Sweep object () and make the spline circle and the gooseneck Child objects of this Sweep object. The spline circle should lie above the gooseneck in the Object Manager’s hierarchy. Reduce the circle spline’s radius to slightly less than that of the lamp base’s cylindrical extension.
In order to make the lower part of the gooseneck appear more stable we will only use part of spline path’s total length for the Sweep object. Reduce the Sweep object’s End Growth value until the shape reflects the illustration in the image below (about 9%). Switch to the Caps tab and set the End value to Fillet Cap, the Steps value to 4, Radius to 2 and enable the Constrain option. Voilá.
The moveable section of the gooseneck will be created using an additional Sweep object. Create another Sweep object as well as another Circle spline primitive, which will serve as our profile. Set the new circle spline’s Radius to 4.8 and its Plane to XY.
You could simply copy the gooseneck’s spline and use it in conjunction with the second Sweep object. However, this would be impractical if the gooseneck is later modified or animated. Therefore, we will select the gooseneck’s spline and create an Instance of it ().
As explained in the Boole/Instance tutorial, Instance objects are copies that reference the original object from which they were created. Hence, an Instance object will reflect modifications made to the original object it references. Otherwise an Instance object can be placed, rotated and even scaled (in Object mode) just like a separate object. In our model, however, this Instance will remain exactly the same as the original gooseneck.
The result should look like what’s shown in the image below.
The Instance serves as a normal spline path with the circle spline within the Sweep object. Of course the new Circle Spline’s radius should be slightly smaller than the gooseneck’s base in order to create a proper transition. Leave the new Sweep object’s End Growth value set to 100% - we want to make use of the entire spline - and don’t worry about fillet caps at the end since it will be covered by other geometry anyway.
The Gooseneck’s Top Edge
We will create a somewhat more elegant transition from the gooseneck to the actual light fixture. First, create a Cone primitive and scale it so its bottom radius is slightly larger than that of the gooseneck object (see image below). Define its settings as follows: Top Radius = 5.5; Bottom Radius = 7.25; Height = 20; Height Segments = 1. In the Cone object’s Caps tab, enable the Top and Bottom options and set each option’s Radius and Height values to 1. We colored the object blue to make it easier to see. In order to avoid having to manually position this object at the top end of the gooseneck we will apply an "expression” tag. Expression tags can be seen as little helper scripts that can be assigned to an object on an individual basis. Expression tags can be assigned via the Object Manager’s Tags menu.
One of these Expression tags is the Spline Path tag. With the Cone object still selected, assign an Spline Path tag to it (Object Manager: ). Once the tag has been created its parameters and options will be displayed in the Attributes Manager below. The spline to which the Cone object should be assigned can simply be dragged & dropped into the Spline Path tag’s spline Path field. We will drag the original gooseneck spline into this field. Enabling the Tangential option lets you define the axis along which the object will be oriented along the spline. Select Y as the axis and set the Cone object’s Orientation option (Cone object’s Object tab) to -Y. This will reverse the Cone object’s orientation along the spline. Switch back to the Align to spline tag and set its Position value to 99%. This value defines the position of the object along the spline (a value of 50%, for example, would place the Cone object halfway up the spline). We chose a value of 99% so that the tangential calculation has enough information about the shape of the spline before and after the given position.