You can get in on the NURBS movement using a Cyberware Rapid 3D scan

This issue of the newsletter features two ways to convert data from Cyberware scans into NURBS.

If you need an efficient format for describing complex curved surfaces, your best bet might be NURBS (Non-Uniform Rational B-Splines). They are efficient for use in modeling and other applications, and they store efficiently, too. For these reasons, NURBS are becoming increasingly popular in many fields.

There is a marvelous surface editor and scan-to-NURBS converter called ntest, which was developed by Phil Dench and is available from Cyberware. Or you can choose a professional software package offered by Imageware that provides conversion to NURBS and a whole lot more.

Good-Looking NURBS from Cyberware Scans

Phil Dench, Curtin University of Technology, Perth, Western Australia

My project of converting Cyberware scans to NURBS began when artist Jill Smith asked for help in getting scans into a surface modeler. She wanted to move some seashell scans into the modeler to cut up, join together, distort and manipulate in other ways. She also wanted to get a scan of her own head (Fig. 1) into the modeler – a follow-on to work she had done using molds of her head.

In my first efforts to get scan data into the modeler, I looked at an IGES file generated by cyges and managed to get section lines, but the resultant skinned surface was not satisfactory. I wanted to work out a way of getting the scans into the modeler as a much better looking surface. After experimenting with various approaches, I developed the procedure described here and an implementation of the procedure I call ntest.


First I interpret the Cyberware scan data as a "point cloud" surface and cover it with a "springy mattress" network. Each node of the network sits on the scanned surface or is interpolated or extrapolated from neighboring scanned data if the node is over a void. Nodes are linked together with "springs" that are used to apply force to the nodes so that they can move over the scanned surface.

Why move the nodes over the surface? The reason lies in a NURBS surface's behavior, or more accurately, its misbehavior. The NURBS surface I generate is really a uniform B-spline surface with knot points at the corners of each "piece" of the "piecewise" surface. (Alias users know these knot points as edit points.) If the knot points on these sorts of surfaces are not evenly spaced, the surface folds in on itself, or has exaggerated loops and bumps.

Because each node of the network represents a knot point for the NURBS surface, the goal is to move the nodes so as to evenly distribute the knot points. Once the surface knot point positions are set, it is easy to get the surface control point positions.

There should be no problem getting an even spacing if the scanned surface were flat, but that is not often the case. Noses and chins stick out, eyes are sunken. I need to pull the network up onto the nose and down into holes to get an even spacing over the surface. On a nose shape, for example, I want the knot points to be distributed along the surface and not just evenly spaced from the front view.

Fig. 3 shows an unwrapped view of Jill's head with a network covering the section of the face I want skinned. This is the view that ntest produces. At the beginning, the network is evenly spaced from the front view.

This network produces the surface shown in Fig. 4. The side of the nose and the chin line are corrugated, and a few strange bumps appear around the mouth. There are a couple of ways to get rid of these artifacts.

One approach is to increase the resolution of the network. The more control points in the final NURBS surface, the closer it will be to the original scan surface. Any bumps, corrugations or wrinkles visible then will be the fault of the person being scanned, not ntest. The more control points there are, however, the more difficult it becomes to manipulate the surface.

Figure 5 shows a better approach. If I shift all the nodes around to get an even distribution over the surface – not just from the front – then all the corrugations and extra bumps disappear.

The surface produced from that network shape appears in Figure 6. The irregular strip down the right side is due to Jill moving her head during the scan. But the surface is less than perfect in other ways, too, such as in the area over the left eye (Jill's right eye). Both eyes and the area around the lips are also blurry.

Figure 7 shows my solution to the blurriness around the lips. By attracting more network nodes to that part of the scanned surface, I get more control points there, and so the surface gains more detail. This is done using constructs I call "gravity" sources, which suck the network in. A couple of these sources have been placed on the lips.

Note that sucking the network into one area for more detail means that you lose detail over the rest of the surface. But if you put these gravity sources on the important features, such as lips and eyes and noses, then the rest of the surface includes just the cheeks and neck and forehead. Detail in these areas is not usually crucial. In fact, this process smoothes out any wrinkles or bumps and makes the subject look as though he or she has had a face lift.

Figure 8 shows the surface that results from placing the gravity sources on the lips. The eyes are still blurred; each needs its own gravity source.

Another Approach

Another way to improve the surface's detail is to bend the network to follow the lines of the face. The network in Figure 9 has been bent to follow the lips.

The surface produced by this bending appears in Figure 10. The lips don't look as good as the lips in the surface with the gravity sources. But the bending method has the advantage that it does not remove detail from the rest of the surface. This method also allows me to split the surface along the lip line so I can open the mouth. The eyes look better in this version, but the nose has gotten a bit pointy. I'm still experimenting with this method of deriving NURBS surfaces from Cyberware scans.

Texture Maps

So far I have described techniques for working with Cyberware range scans. The ntest program can also produce a color texture map that will map onto the NURBS surface.

Figure 11 shows an example of a distorted image that can be used as a color texture map for the surface, and Figure 12 shows the map applied to the surface. Because this map "sticks" to the surface geometry, if the surface is reshaped, bent or changed in other ways, the color is still in the right place.

Additionally, ntest will produce a bump map – a map of the height differences between the NURBS surface and the original scan data. Say you scan an object with lots of surface texture and want to keep that detail. Theoretically, you can use ntest to give you the overall shape with a relatively simple surface, then apply the bump map to get all your surface texture back. I have not tested this approach yet.

Special Effects

Figures 13 and 14 show what happens if you let the network get out of control. It produces this nice "made in clay" effect that, even if it is not that useful, looks pretty interesting. Figure 15 shows the color texture map produced by a loose network.

Figure 16 shows an example of the effects you can achieve once you have converted a scan to a NURBS surface. To produce these models, I filtered the surface through a program that did a circular transformation of the control points. Notice how the color texture map has stuck to the surface, even though its been twisted around.

The methods described here appear promising. There is more work to do, especially on the network bending technique, before I will be satisfied with the results.

For those who have access to the Internet and ftp, I have put all the originals for the images in this paper into my ftp area. Just ftp to and login as anonymous, then grab all the files in pub/architec/ntest.

Imageware Supplies NURBS Surfaces

If you are interested in generating NURBS surfaces from Cyberware scans, consider Surfacer 3.0 from Imageware, Inc. Surfacer provides tools for point processing, NURBS curve and surface generation, geometry analysis and geometry input/output.

Surfacer reads point data directly from Cyberware image data files, OBJ files, ASCII X, Y, Z files, and DXF, VDA and IGES files. The program also reads curve and surface geometry data from DXF, VDA and IGES format files.

To help with the conversion process, Surfacer's point processing tools allow you to perform analysis, filtering, sampling/data reduction, cross sectioning and segmenting of random 3D point data. Additionally, the program can automatically detect and extract features in the random data. You can also "register" data to precisely align data from multiple 3D scans or to compare scanned data to mathematical "golden part" surface geometry.

Once you have converted your data to NURBS, Surfacer provides a robust curve and surface modeling environment. At the heart of the modeler are unique NURBS algorithms that automatically fit curves or surfaces to point-cloud data, giving you full control over the fitting parameterization. A complete set of tools allows you to edit, trim, combine and analyze complex curves and surfaces, whether created in Surfacer or input from other sources.

Surfacer can output the resulting points, curves and surfaces in various formats, including DXF, GIES 5.0, VDA-FS, STL (stereo lithography) and OBJ (point/polygon) format. Input and output formats are also available for proprietary systems.

Surfacer's first adopters have been automotive and aerospace manufacturers but the program is targeted at anyone who wants to reduce the time and effort involved in converting 3D scans to NURBS models. Imageware expects applications in industrial design, rendering and animation, die and mold design, reverse engineering, inspection, GIS and biomedical product development.

Imageware was founded in 1991 by Dr. Ramesh Jain, who is known for his work in image processing, artificial intelligence and computer graphics. Dr. Jain is also director of the Media Lab at the University of California San Diego.

Surfacer is available for Windows PCs ($8000) and Silicon Graphics, Sun, Hewlett-Packard and IBM workstations ($15,000). For more information, contact Michael Young, Imageware, 313 N First Street, Ann Arbor, MI 48103, Telephone 313-994-7300, Fax 313-994-7303.

Cyberware Demo via FTP

To access an SGI Cyberware demo (similar to the one on HOTMIX) and other Cyberware files via Internet, use the following procedure:

  1. ftp (alternatively
  2. Login as anonymous; password is guest.
  3. cd pub/dabro
  4. binary
  5. get cyberware_demo.tar.Z
  6. close
  7. logout

At your workstation:

  1. uncompress cyberware_demo.tar.Z
  2. tar xvo cyberware_demo.tar
  3. Follow instructions in the README files for each demo.

If you have any questions, contact Cyberware's George Dabrowski:

SCSI and Vertex files produced by Cyfilter programs

Cyfilter programs produce file formats whose only use is to serve as input to other programs in the cyfilters directory. Cyoptic, cyview and cyraw are specific examples. The cyfilters directory contains developmental code used at Cyberware for various experiments, demonstrations and special projects. It is a set of fairly small programs that use UNIX pipes to exchange scanner data between one another. The directory is available via anonymous ftp and comes with little documentation. The programs are used mostly with the SCSI interface, although the filter cytcp accommodates user with Ethernet-interfaced scanners.




Corrected vertex stream – only used as input to other experimental cyfilter modules.


Displays the raw SCSI data stream in a window; similar to the Echo view command.



Each vertex in the range map connects to two of its neighbors to make a triangle or to three of its neighbors to form a quadrilateral. Generally, Cyconvert files consist of a list of vertices followed by a connectivity list of polygons. Each vertex of each polygon is indexed into the vertex list, and vertices are defined by a set of X, Y, Z coordinates expressed in meters.



Cyges makes slices exclusively in the XZ plane for output to various IGES entities. Slices can be spaced at any uniform pitch and with any number of points per slice.



Like cyges, Cytoslice allows you to make slices at any uniform pitch in the XZ plane of a range map. Slices are defined by sequences of X, Y, Z points expressed in meters. In the ASCII version, vertices are listed one per line, with a blank line between polylines. The AutoCAD format is similar except some commands are inserted to make the file work as a script (as though you typed in manually).



Cylindrical ASCII (Theta, Y, R)

If you just need an ASCII list of digitized points, this is the tool to use. It offers several options and will convert most types of Cyberware files.



Cytomesh is like cyconvert, except that cytomesh only makes AutoCAD scripts. For a more efficient triangle mesh, use Cymage and byutodxf (described below).



Plexus allows you to combine several scans. The individual range maps can then be sliced in any plane and at any pitch or resolution. Slices are output only in IGES format, except when saving slices for later input back into Plexus.



Cymage is a powerful program that accepts surfaces in several formats, including Echo range maps, and generates polygonal surfaces. During processing, you can drastically reduce the number of polygons (triangles), which allows you to realize great efficiencies in later modeling and rendering steps.




Movie.BYU files can be converted by byutodxf to formats for AutoCAD, 3D Studio and other modelers, or by byutotmesh to display texture maps in Echo. Cyberware can supply a memo on this procedure.



A product of Software Systems (San Jose, CA), ModelGen is tailored to 3D modeling for visual simulation. Cyberware range maps can be processed directly by ModelGen.



Surfacer from Imageware is a powerful tool for generating NURBS surfaces from range maps. In addition to working with Cyberware data and NURBS, Surfacer supports a variety of curve, surface and point operations. (See the article on page 3.)



Created by a research group at Stanford University, the Zipper experimental software allows you to align several Cyberware scans into a single surface model. The alignment process is mostly automatic. Zipper works by converting the ranges maps to a triangle mesh. An IGES NURBS surface output is planned.



Ntest is designed for faces but will probably find applications with other objects. (See the article on page 1.)

Echo Range Map File Conversions

Cyberware scanners are an important link between concept and reality, providing essential data for your project. Getting the data into your application is easy with our tools. The data itself is collected in 17 seconds or so, and then the finishing process is just as easy.

With only a couple of Echo commands, you can fill and trim your data. Then you can choose from many different conversion options. Cyberware provides several solutions that cover most markets, and we also provide our conversion source code and file format, so you can expand those capabilities for your application.

For applications that require points, lines or splines, follow the IGES route. For applications that require polygons, consider polygon reduction to make the file a manageable size, then output the file for your animation or design package. For NURBS surfaces, look into Imageware's Surfacer or our Alias converter.

Echo – XYZ Files

If you set the Echo environment variable ECHO_XYZ_FILE to the name of a file before giving the image command, a list of XYZ points (IEEE 32-bit binary floats) are written to that file. These points have not been re-sampled into a range map. Some proprietary modeling programs (not offered by Cyberware) use the resulting file. By not using the re-sampling process in Echo, you can avoid a slight loss of resolution, some alias-type noise caused by our filtering, and some false points that Echo tends to interpolate into certain steep or shadowed areas of the surface. The file contents must be used as a cloud of points. More information about his file is available from Cyberware.

Hot Tips

The Echo software may not clean up its temporary color files in instances such as system crashes. For this reason, check ECHO_TMPDIR occasionally and remove any files of the form ee0000.color. Additionally, if you find that Echo gets slower the longer you use it, try occasionally cleaning up display memory by saving your work, exiting Echo and restarting the program.

Because Echo's compact command increases the latitude increment to maintain proportion, your image might display below the field of view. Pan upward to see the image. If your image displays in the wireframe window but not in the render window, the resolution might be set too high for the compacted view. Try lower the render resolution.

Tidbits & Gossip

Cyberscan has opened a complete Cyberware scanning and reproduction studio in Glendale, California. The company is handy to serve the needs of the motion picture and animation industry in southern California. Cyberscan has already done several scans for that industry, including actors' heads in odd positions (screams, for instance!) and the cast of a person's right hand that had to be scanned, scaled up 50 percent, and mirrored to produce the matching left hand. The company has also made models for helmet manufacturers and scanned architectural moldings. Dick and Dana Cavdek are the owners. Cyberscan, 2444 Honolulu Avenue, Montrose, California, Telephone, 818-248-3279, Fax 818-248-6756.

The Silicon Graphics HOTMIX CD-ROMs #5 and #6 include a Cyberware demo. You'll see a dinosaur, a happy face and a not-so-happy skull model in both range map and reduced polygon versions. This demo is an upgrade from previous versions.

Recent movie work here includes scanning for Pacific Data Images (PDI) for the motion picture Angels in the Outfield. Working on the top of Cyberware's 3D models provided by the scanned data, PDI's animators are building the faces of the angels based on real actors' faces. The process animates the faces by distorting the texture and polygon maps. The animators are creating the remaining parts for the angels using PDI's proprietary computer graphics software.

We've also done scans for Industrial Light & Magic's effects in The Mask.

Cyberware welcomes a new distributor – ND3D of Amsterdam. ND3D's territory includes the Benelux countries (Belgium, the Netherlands and Luxembourg), and the company is helping Cyberware with distribution in France. ND3D has installed a 3030RGB/PS digitizer for demonstration purposes. The managing director and contact there is Andrew Joel. ND3D, Amstel 222, 1017 AJ Amsterdam, The Netherlands, Telephone 31-2—623 34 93, Fax 31-20-627 55 66. Email:

This month we have plans to install a 3030RGB/PS scanner at Silicon Graphics Corporate Briefing Center. Part of Silicon Graphics' main campus in Mountain View, California, the facility showcases Silicon Graphics computer and selected third-party products to high-level visitors. For information: Michael Wills, SGI Corporate Briefing Center, 2011 N Shoreline Blvd., Mountain View, CA, Telephone 415-390-3253, Fax 415-954-0427, Email

Cyberware VP Stephen Addleman visited Japan Tech Services in Yokohama recently to assist with the company's exhibit at SGI Expo '93. Japan Tech Services has earned the distinction of being Cyberware's most successful distributor.

In a dazzling building in Frankfurt, you'll find the headquarters of Performance Computer System GmbH, our distributor for Germany, Switzerland and Austria. Gόnter Jacob has installed both a 3030RGB/PS for scanning faces and a 3030RGB/MS for model-shop work. The company is distributing Cyberware products as well as offering scanning and production services. Performance Computer System GmbH, Ferdinand-Porsche-Strasse 5, 60386 Frankfurt Main 60, Germany, Telephone +49 69 411 889, Fax +49 69422 333.

CNN visited Cyberware in September to report on Dr. Loren Eskanazi's work in establishing normative breast-shape data for use in reconstructive surgery. Dr. Dean Edell also covered the story for CBS News. Three weeks later, CNN was back to shoot a story about our other contributions to film, medicine and industry. The piece ran worldwide on November 4. We also recently participated in a local children's education TV program, and Newton's Apple for PBS.

For flight-simulation buffs and other modeling fans, you might want to look into using Cyberware scans with Software Systems' ModelGen program for VisSim. This interactive 3D modeling environment allows you to graphically view and edit hierarchy, as well as cut and paste 3D data between scenes. ModelGen also lets you interactively define the behavior and look of virtual-reality worlds. Software Systems, 1884 The Alameda, San Jose, CA 95126, Telephone 408-247-4326, Fax 408-247-4329, Email multigen!

How to Get a .dxf File From a Cyberware Image

  1. Scan and edit your image using fill, toupee, smooth, despike, etc.
  2. From a UNIX shell window, type cymage to load the polygon-reduction software. The red outline of a new window will come up. Use the mouse to place the window.
  3. Notice that the buttons Decimate, Normals and Rendering are selected by default. Thus, as soon as you read in a file, the decimation process begins. Until you get used to the process, click on each of the selected buttons to deselect them while you set up.
  4. Drop the File menu and Read in your Cyberware image.
  5. If you do not want to disable rendering, try this tip to speed up the display process: Once the file has been read, choose Properties/Actors from the Option menu, and select the Wireframe option. Under Renderer on the Options menu, you can set the slider to do a faster render so that fewer polygons will be drawn.
  6. Setup up the reduction parameters by dropping the Filters menu, choosing Decimation and using the slider to select the level of reduction. You will want to decimate as much as possible for .dxf files because they can get extremely large. We recommend 90 to 95 percent. Additionally, change the max iterations value to 1 or 2, which is usually adequate for .dxf files, then close the window.
  7. If you are scanning from an MS platform, drop the Filters menu and choose Normals. Click on the button entitled Flip Normals.
  8. Click on Decimate and Normals in the main window, then click on Execute. You will see some of the process commands in your UNIX workshell window. Control will return to the main window when the process is complete. If you selected Rendering, a render window will appear. Place it with the mouse. The system will continue with a little more processing after you place the window, then full control will return.
  9. Drop the File menu and Write your decimate file to MOVIE.BYU format. Click on the file name line and type in a filename – dino1, for example. Cymage will create two files; use the one with the .g extension. You can remove the file with a .t extension, unless you are interested in using the reduced texture map.
  10. Repeat the Read and Write steps if you have additional Cyberware images.
  11. From a UNIX shell window, type byutodxf < dino1.g > dino1.dxf Repeat this command for each .g file that you need to convert. Remember to use the mouse to highlight lines in the shell window that you do not want to retype and click the middle button to copy them to the current cursor location.

Return to the Newsletter Listing