Granny 3D

Granny FAQ

This is a list of frequently asked questions about Granny.

If you don't find the answers you need here please e-mail our technical support staff.

Granny Frequently Asked Questions:

Question
Answer
So, is Granny a 3D engine?
No, Granny is meant to be a component of your 3D engine. It was designed to work seamlessly with any 3D scene architecture. You'll be able to get running with your 3D engine in minutes!
Does Granny work with OpenGL? How about Direct3D? How about a software renderer like Pixomatic?
Granny works with all 3D APIs and software renderers. At render time, Granny provides the application with data that can be fed directly to all of today's popular 3D APIs, or directly interpreted by a software renderer. Both OpenGL and Direct3D sample code is included in the SDK.
Is Granny designed in a modular fashion? Can the IK be used separately from the rest of the engine, for example?
Yes. You can use Granny's IK so long as you can provide it with a bone array that it understands. Also, since the source code to Granny comes with the SDK when you license, you can also cut and paste our IK routines and modify them to suit your needs.
What platforms is Granny available for?
Pretty much everything. Granny currently supports Win32, MacOS, Linux, iOS, Android, XBox (all versions), Playstation® (all versions), Stadia, and Nintendo Switch. Granny can be compiled in straight ANSI-C mode to easily add support for any other platform you want.
Does Granny support normal mapping?
Yes, Granny has complete normal mapping support, for both tangent space and object space normal maps. It also includes an powerful normal map generation tool that allows you to rapidly generate normal maps from high-res geometry.
Is it possible to overload the rendering functions of Granny?
Yes. In fact, Granny doesn't technically "render" anything directly - she simply provides the application with vertex arrays and textures that are ready to pass directly to Direct3D or OpenGL. However, instead of handing them off, you can instead use them for other purposes, such as cartoon rendering or shadow-casting. We tried to leave it as open-ended as possible, because we know that everyone likes to do their rendering differently.
Are textures with an alpha channel supported? What bit depth options are there?
Granny supports all alpha texture formats, including 0-bit, 1-bit, and 8-bit alpha.
Does Granny support NURBS patches or other curved surfaces?
Yes and no. We do support the exporting of NURBS from 3D Studio, but we tessellate the NURBS during export and do not save the curved surface representation. The run-time engine currently deals only with triangles.
What type of keyframe reduction is done when I export an animation from Max?
Granny uses motion fitting rather than keyframe reduction. This means that the keyframes you set in MAX are not necessarily the keyframes Granny will use. Granny picks its own set of keyframes based on an error metric that attempts to make motion playback match the original motion as closely as possible.
Can I control Granny's motion sampling either at export time or programatically?
Yes. The sampling can be changed to any rate between 1x and 8x the art tool's frame rate, and then the fitting uses the error tolerance you specify in the exporter preferences to generate motion curves from the samples.
Can Granny queue up sequences of animations?
Absolutely. Granny allows you to trigger an animation at any time in the future, and it will automatically start the animation at that time. You can queue as many animations as you like.
Can Granny play back animations at different speeds?
Certainly. Granny gives you complete control over the playback speed and timing of every animation in the system, and you can play animations backwards as well (also at any speed).
How can I save an animated camera into a Granny file and play it back inside my realtime engine?
Cameras and lights are automatically saved out as bones with additional information attached. Thus, they can be played back through the regular animation system in Granny with no additional calls necessary. Plus, all the camera and light data is included in the export as well, like FOV information and aspect ratio for cameras, and things like color and projected texture data for lights.
Does Granny do any animation level of detail processing?
Yes. Granny has two mechanisms for reducing the number of bones sampled at runtime. The first, Skeletal LOD, is a low-cost heuristic method that is enabled for every model exported using Granny. The second, Animation LOD is a sampling-based method that is more expensive to compute in your toolchain, but is more precise at runtime. Both methods save you significant amounts of processing power.
Does Granny do any mesh level of detail processing?
Granny gives you full access to all the mesh data its deforming, so you're free to swap levels of detail at will, or even compute progressive LOD triangle lists and use those for rendering if you want continuous LOD. Our exporters will also generate edge connectivity lists and vertex coincidence lists so that you can do LOD processing easily. We recognize that most engines have a specific way they like to handle LOD, and we try to support them all.
Does Granny allow models to have attachment points or other markers that can be used for positioning objects or sounds?
You bet. There are no limits to the number of bones a particular model can use, so your artists can add special bones for all sorts of uses.
Is there any way to attach application-specific scripts or parameters to bones or meshes in my art tool in such that my application can access them at run-time?
Absolutely. Granny's exporters save all user data, and this data is accessible by the application at run-time. Also, Granny automatically saves source information about bones and meshes, such as what art tool source file they came from or what bitmap file a texture map came from.
How fast is Granny's texture decompression?
Granny's texture compression is based on Bink Video's image compression algorithms, which by necessity must perform very quickly in order to maintain high framerate video playback. The image compression gets similar compression ratios as JPEG 2000, but performs at several times the speed. However, it obviously is not quite as fast as simpler compression schemes such as S3TC which do not compress the textures very much in the first place.
Is Bink texture compression the way to go? What about S3TC or FXT1?
It depends on your needs. Bink texture compression is vastly superior in terms of image quality and file size, but S3TC can be very important for minimizing graphics card memory use. So the type of texture format depends quite a bit on the situation.
Are there any restrictions on how my motions are created in 3D Studio or Maya?
Nope. We sample our animations and reconstruct b-splines from the sampled data, which means that your animators can use whatever techniques they want to produce the motions. IK, look-at targets, path constraints, dynamics.
Does Granny help with collision detection?
Yes. Granny provides oriented bounding boxes for all models so that you can perform collision detection with scene elements or other characters as you see fit, and it also includes ray-box, ray-triangle, and ray-sphere collision detection routines for you to use with Granny bounding boxes and meshes, or your own bounding boxes and meshes.
How does Granny handle the application of animations to models?
It is name-based. Any names that can't be matched are not applied. In addition, you can specify a set of name translation rules that Granny will use during matching to do conversions between animations and models that were not made with the same bone naming convention.
Do you have to save each animation in a separate file, or can they all be saved in one file and referenced by name?
Well, Granny allows multiple animations per file, but the catch is that most art tools do not! You have to use the preprocessor to stitch together the individual animations into a combined file. We provide the "CombineElements" command for just this purpose.
Can Granny attach models together at run-time?
Sure can. Any model can be attached to any other model, and you are in control of when and how this happens.
Can Granny blend two animations together at run-time?
Absolutely. It can blend arbitrarily many animations together on any model, and each animation can be weighted such that certain animations will influence the model more or less than others. Furthermore, the weights can be animated so that animations will "ramp up" or "ramp down" in their effect, eliminating seams or popping that might otherwise occur when blending animations that do not line up correctly.
Can you export an animation if there is no geometry in the scene?
Absolutely. You have complete control over what gets exported and what doesn't, so Granny exports can contain any combination of animation, geometry, and material data that you see fit.
Can Granny play back entire animated scenes?
Granny's exporters and run-time engine impose no limits on animations, so they can consist of multiple characters and even background sets. However, keep in mind that Granny wasn't designed specifically for rendering environments, so your mileage may vary depending on what type of scene you're trying to animate.
Is there any way that I could bundle a whole load of Granny files into a resource file?
Yes. In fact there are multiple ways to do this. You can use the file reading callbacks, which allow you to replace the way Granny does I/O with any type of file system you want. Or, you can just do the I/O yourself and hand Granny a memory image of a .gr2 file and she will parse that, never touching the file herself.
Is there any way that I can control the loading and changing of texture maps rather than Granny?
Yes. You have two options. If you want to simply change texture maps, that's easy, because you control what texture is loaded at render-time - so you are free to not use the texture reference that Granny gives you. If you'd like to do all the texture handling yourself (and have Granny do no texture handling whatsoever), you can export all your models without any included textures at all. This will force Granny to embed only the texture and material names, but no bitmap data. You can then use these names to load your own textures with your own texture management system.
How do I use animating textures with Granny?
Currently Granny doesn't handle animating textures for you, so you have to do it yourself. When you go to render an object, you can modify the texture that you were using.
Does Granny do Inverse Kinematics?
Yes. You an do IK to fix up animations after they've been sampled (to keep feet planted or to adjust hands to hold a weapon and so on), or you can feed IK into the motion blending system as a pose.
How fast is Granny?
Real fast. Granny's animation system is rarely the bottleneck in 3D applications - the application's rendering pipeline generally becomes the performance bottleneck long before Granny does.
Can Granny play the same animation on different characters?
You bet. In fact, it can adapt animations on-the-fly for characters with different proportions so long as their bone structures are similar.
Does Granny ship with source code?
Yes. The source code to the run-time library is included in the SDK. The source code to the exporters, however, must be licensed separately.
Can Granny export any 3D Studio MAX scene?
Because 3D Studio is plug-in based, there is no way Granny can export all types of animations and models. However, Granny does handle a wide variety of scenes, including those made with Skin, Physique, and Bones Pro.
Will Granny work with packages besides 3D Studio, Maya?
Granny now has support for converting FBX files. This allows use of packages other than 3D Studio and Maya. Be sure to e-mail us if you're using a package other than these and would like to use Granny for your game.
Do you currently support or plan to support vertex blending in hardware?
Yes. We expose the composite transform array and the vertex data, so you are free to feed that data directly to the hardware instead of asking Granny to deform it for you.