Oct 97 - Macintosh Q and A
Volume Number: 13 (1997)
Issue Number: 10
Column Tag: develop
Macintosh Q & A
by Apple Developer Support Center
All Geometry Vertices Need UV Parameterization
Q. Is it possible to apply UV parameterization to some, but not all of a geometry's vertices?
A. No, you must apply UV parameterization to all of the vertices in a given geometry.
Default Number Of Surface Planes
Q. When rendering a QuickDraw 3D 1.5 file containing objects such as cylinders and ellipsoids, the default number of surface planes is much higher than in QD3D version 1.0.6. While this looks nice, it requires more memory. Is there a way in my application to limit the 'resolution' (i.e. the number of surface planes) used by QD3D 1.5?
A. You can use a subdivision style to get control over the number of faces generated. For example, you can create a subdivision style object as follows:
theSubdivisionStyleData.method =
kQ3SubdivisionMethodScreenSpace;
theSubdivisionStyleData.c1 = (float)20;
theSubdivisionStyleData.c2 = (float)20;
mSubdivisionStyle =
Q3SubdivisionStyle_New(&theSubdivisionStyleData);
You can then submit the subdivision style in your rendering loop before you submit your geometry.
EllipsoidData Caps Field Explanation
Q. I am perplexed as to what the caps field in the TQ3EllipsoidData structure is used for. Can you explain?
A. Here's an explanation. If you cut a pool ball in half, you get a solid hemisphere. If you cut a basketball in half, you get a hollow hemisphere. The intention of the caps is to specify which sort of a ball you'd like to pretend you're rendering. You will IN THE FUTURE (NOT for 1.5.1) be able to specify min and max parameter values, making partial ellipsoids (cones, etc.). When this feature is released, you can either leave the caps field value as none (kQ3EndCapNone), in which case you'll get a hollow-looking partial sphere, or interior (kQ3EndCapMaskInterior), in which case you'll get a solid-looking partial sphere.
Using Hardware Acceleration
Q. How do I set up QuickDraw 3D hardware acceleration? Is there any specific API calls I have to make? Or does hardware acceleration just work automatically if you have a hardware accelerator board installed?
A. The QD3D interactive renderer automatically uses hardware acceleration if a card is present (and selects the best hardware if there are multiple cards). The wireframe renderer does not.
You can tell a renderer to use hardware acceleration with the Q3InteractiveRenderer_SetPreferences() and Q3View_SetRenderer functions.
Check out the BoxPaint sample code from the QD3D SDK which uses the above functions to set the renderer.
Default Surface/Shader UV Params For Caps of Cones & Cylinders
Q. Does anyone know what the default surface/shader UV parameterizations are for the caps of cones and cylinders in QuickDraw 3D version 1.5?
A. Check out the article titled, "New QuickDraw 3D Geometries", by Philip J. Schneider in develop journal issue 28. Look for the section "Ellipsoids, Cones, Cylinders, and Tori", where you'll find a discussion about the default UV parameterization of these primitives. Here's a relevant excerpt from the article: "For the cone and cylinder, the parametric origin is on the bottom edge, at the point where the majorRadius vector ends. V goes up while U goes around in the direction shown by the arrows. The bottom of the cone, and the top and bottom of the cylinder, are parameterized exactly like the disk."
The discussion about the disk primitive is in the article as well.