AECbytes Tips and Tricks Issue
#15 (February 21, 2007)
Creating Walls with NURBS in 3ds Max and VIZ
Book & Video Author
You probably haven't ever considered making
architectural walls and openings with Non-Uniform
Rational Basis Splines. I mean, why would you?
NURBS are best known as tools that model perfect
curves and surfaces, whose every point is mathematically
defined. Automotive and industrial designers,
naval architects, and even character modelers
use the power of NURBS to represent surfaces of
complex curvature. The most mature NURBS toolsets
are in Alias Studio, Maya, and Rhinoceros.
However, NURBS tools have quietly been a part
of 3ds Max and VIZ for many years. These programs
are just not known for NURBS, and it's my hunch
that most people are intimidated by their complexity
and consequently have stuck with mesh or patch
modeling tools. The few brave souls that have
dived into the deep end of the NURBS pool in 3ds
Max and VIZ are still probably those few who require
NURBS' superior power to precisely handle complexly
I've discovered that NURBS are excellent tools
for representing walls. Yes, even for walls that
have absolutely no curvature to speak of. I like
creating walls with NURBS for editing flexibility,
superior organization, and adaptive topology.
In fact, I suppose that the creators of SketchUp
are using NURBS under the hood to drive what amounts
to a very intuitive and powerful modeling program
(but that's purely my supposition). I invite you
to go through this tutorial and decide afterwards
how you want to make walls and openings in 3ds
Max and VIZ.
Let's start by sketching a simple floor plan
in the Top viewport. Don't sketch
the linework with NURBS curvesit's easier
to get straight lines with splines. Use grid
point snap and sketch the following rough
shape using the Line shape tool.
Click the last point of the line on top of the
first point and click Yes when
prompted to close the spline. Don't outline the
spline with the wall thickness, as you're probably
tempted to do if you're used to extruding spline-based
walls. Instead we'll leave the floor plan as a
Rename the object Walls. Turn
off snap and go to the perspective viewport by
pressing S and P.
Switch to the Modify panel and
apply the Extrude modifier. Set
your units to US Standard if
you want to match what I'm doing and then set
the Extrude amount at 8 feet.
Select the NURBS radio button
in the Output group.
Notice that the walls don't have
caps on the top and bottom now like they do with
Mesh output. Only the walls have been extruded.
3ds Max 9 shows the backfaces of the extruded
surfaces by default, but 3ds Max 8 and VIZ do
To see the backfaces of the wall, right-click
and choose Properties from the
Tools 1 quad menu. If Display
Properties are set By Layer,
click the button to go By Object.
Uncheck Backface Cull and you'll
be able to see the inside surfaces of the wall.
If these surfaces appear dark (no lighting), right-click
the viewport label and choose Configure
to open the Viewport Configuration
dialog box. Choose the 2 Lights
radio button in the Rendering Options
group. Click OK and both the
inside and outside surfaces will appear evenly
Now the stack contains a Line
object with an Extrude modifier.
Right-click at the bottom of the modifier stack
and choose Collapse All. Click
Yes in the warning dialog and
you'll be left with a stack containing a NURBS
Press F4 to toggle on edged
faces mode. Open the Display Line Parameters
rollout. Press F3 to toggle into
wireframe mode. Notice the green isoparametric
lines. These can be helpful on curved surfaces,
but we don't need them.
Choose the Mesh Only radio button
and you won't see any iso lines. Switch back to
shaded mode by pressing F3 again.
What we see in edged mode matches what we see
in wireframe. Now we're back in our comfort zone.
Open the Surface Approximation
rollout. NURBS surfaces have to be "approximated"
by mesh tessellations. NURBS live in a perfect
mathematical world where they live in eternal
bliss, but we must approximate them into mere
mundane meshes when they descend into our world.
You see, all geometry must be reduced to triangles
to be rendered. Meshes are fundamentally triangles,
but I digress.
As we are modeling walls, which are almost certainly
flat, we'll go for the minimum tessellation. Set
tessellation method to Regular
and use 1 step in both U
By the way, the letters UVW refer to the coordinate
system defined by the surface itself. The UVW
system is also used by materials to locate texture
maps on surfaces. I suppose they chose the letters
UVW because they immediately precede XYZ, and
we already know those letters refer to spatial
Right now you have an attractive set of surfaces,
but they are paper thin. Apply the Shell
modifier and enter the wall thickness of 5
inches in the Outer Amount
parameter. The walls get extruded outward in elevation
and now we're seeing solid walls.
Look closely and you'll see that the outer corners
don't meet in a single edge. They have a chunk
missing because of the way that each wall segment
was extruded outward. Use the Shell
modifier with Outer Amount when
you are making an interior model. But let's say
we are making an exterior model where we will
see the outside of the building. Set Outer
Amount back to zero
and set Inner Amount to 5
All inner corners of the walls will have chunks
missing, but the outer corners all look great.
If you need both inner and outer corners to be
right (for a walkthrough or web3D model) you'll
have to adjust the NURBS curve manually. Go to
the Curve CV (CV means control
vertex) sub-object level of the NURBS Surface.
Select one CV on the corner you want to fix and
move it a distance equal to the wall thickness.
Here we move one CV minus 5 inches in
X. Go back to object level and click
the Show End Result toggle in
the stack. The corners are all healedhallelujah!
Now we are finally in a position to cut openings
in the walls to accommodate windows and doors.
Let's make a window first. Sketch a Rectangle
on the outer surface of a wall using Autogrid
mode. In this way, the spline's local XY plane
will be on the wall's elevation.
Select the Walls object, go
to the Modify panel and select
the top level of the NURBS surface
in the stack. Click the Attach
button in the General rollout
and click on the rectangle. Now the rectangle
has become an independent curve subobject of Walls.
Rectangle01 is gone; Walls is the only object
in the scene. All NURBS work happens with subobjects.
I like to pull my curve subobjects out of the
plane of the wall so they will be easier to select
later on for editing; it's just a little trick
I've developed. Go to the Curve
subobject level. You have four independent "curves"
(which actually look like lines) here. Click the
All Connected Curves button at
the top of the Curve Common rollout.
Click on one of the curves and all four will highlight.
Pull the selection back a short distance away
from the wall surface.
In order to cut a hole in this wall we need to
project these four independent curves onto the
wall surface. Go to the top level
of the NURBS Surface in the stack. Open the Create
Curves rollout. Click the Normal
Proj. tool and then select a curve (former
segment of the rectangle) and click the wall surface.
A green dependent curve will appear projected
on the wall surface. You wouldn't be able to see
this unless you had just pulled the independent
curves away from the wall.
Project all four independent curves (blue) to
dependent normal projected curves (green). Now
go to the Curve subobject level,
select the independent curves that you pulled
out of the plane of the wall, and move them. The
dependent curves follow. The position of the window
is completely editable by moving the independent
There is one more step to trim the opening. Go
back to the top level of the
NURBS surface and open the Create Surfaces
rollout. Click the Multi-Trim
tool and select each one of the green dependent
normal projected curves. Right-click to stop selecting
and check Flip Trim at the very
bottom of the Create panel (you
will have to drag the panel up). Congratulations,
you've cut the window opening.
Cutting a door opening is a bit easier than trimming
out windows. It works differently because doors
interrupt the bottom edge of the wall, so they
can't be trimmed. Go to the Surface
level of the NURBS Surface. Click the Break
Col. tool in the Surface Common
rollout. Toggle off Show End Result
in the stack so you can see the blue lines. Click
wherever you want one edge of the door opening
to be. Click again a short distance over to add
the other edge of the opening. You are breaking
the NURBS surface along these lines into new surfaces.
Click the Break Row tool and
click near the top of the new surface you just
broke off to set the header height. Right-click
to end the tool. Select the door surface and delete
Return to the top level and toggle on Show
End Result in the stack again. The door
opening appears in the solid wall. Now you can
adjust the position, heights and sizes of the
openings by selecting the Surface CV
level for doors and Curve CV
level for windows. You can add as many doors and
windows as you want to a single wall object. It's
all extremely organized and very flexible. Compare
this with boolean compound objects, where you'll
usually have deep nesting issues that make editing
The workflow for creating NURBS walls is actually
much easier than it might seem the first time
you run through it. Half the battle is wrapping
your mind around how NURBS workdependent
vs. independent curves, curves on surfaces, subobject
modeling tools, UVW space, isoparametric lines,
etc. I have found NURBS worth the steep learning
curve, and I hope you realize the benefits of
making walls and openings with NURBS.
A 14 minute video showing this technique is available
on my vodcast, The
About the Author
Scott Onstott is a book and video author of
AEC software tutorials. He has a degree in architecture
from UC Berkeley and has served as an instructor
there, in addition to working in several prominent
engineering, architecture, and interiors firms
in San Francisco. He has also worked as a technical
editor and technology consultant.
Scott has contributed to over two dozen books
and videos on AutoCAD, Architectural Desktop,
VIZ Render, Revit, 3ds Max, VIZ, Photoshop, Illustrator,
Painter, Fireworks, and Dreamweaver. He most recently
with Lynn Allen. He can be reached via: www.ScottOnstott.com.
If you found this article useful and have not
yet subscribed to AECbytes, please consider
doing so. Subscription
is free, and more subscribers will allow this
publication to provide more of such content
Tricks > Creating Walls with NURBS in
3ds Max and VIZ > Printer-friendly