OpenModel and OpenAlias Notes | |
|
| |
The following information is new for Version 9.0: Limitations Fixed | |
|
|
Fixed The AlDagNode class now supports the copying of blind data through a copyObject() method. |
|
|
Fixed A core dump with the AlUniverse::retrieve() method, in the OpenModel libraries, has been fixed. This problem could occur if the method failed to retrieve a wire file. |
|
|
Fixed The AlUniverse::writeSDL() and AlUniverse::writeSDLNoAnimation()methods, in the OpenModel libraries, now write out command multifillet objects. |
|
|
Fixed Under some situations, it was possible for AlSurface::nextShader() to return the current shader. This could result in an endless loop. The AlSurface::nextShader() code now detects this condition and returns NULL if this has occurred.
Fixed A core dump with the function AlSet::setName() has been fixed. This problem would occur if the name parameter passed to this function was longer than 100 characters. |
|
|
Fixed The method AlUniverse::deleteAll() now removes blind data from the universe. |
|
|
Fixed A number of the methods in the AlRender class including AlRender::Image::setAspectRatio() were restricting the input values to ranges less than the Render Globals Editor in Alias allows. These restrictions have been removed where necessary within this class. |
|
|
Fixed The AlPerspectiveCamera class now includes a method ( setPlacementFitCode() ) for setting the placement fit code. |
|
|
Fixed The AlWindow class now includes a method ( aliasWindowPosition() )for getting the Alias window position. |
|
|
Fixed Utilities for removing blind data from a wire file are now available in the $ALIAS_LOCATION/ODS/OpenModel/utilities directory. The precompiled binaries are in the $ALIAS_LOCATION/ODS/OpenModel/bin directory. |
|
|
Fixed Construction history plug-ins are now better documented through a new example (linkObject.c++) along with information in the Online documentation. |
|
|
Fixed The Plug-in Manager would always attempt to search the directory path defined by the ALIAS_WORKENV environment variable. If this variable was not defined, a message would be written to the error log file everytime a search for plug-ins is done. The Plug-in Manager code has been changed to omit the ALIAS_WORKENV directory from its list of search paths if it is not defined. This avoids repetitious messages about the ALIAS_WORKENV environment variable not being defined. |
|
|
Fixed The AlFunctionHandle appendToMenu() incorrectly added the plug-in menu item to the bottom of the menu. To fix this problem, we added an installOnMenu() method that accepts a |
|
|
Fixed The location parameters of the AlPromptBox function now work. New Limitations |
|
|
LimitationThe AlPixFile class does not support GIF files. |
|
|
LimitationThe method AlSnap::toCV() does not snap to the joints of a skeleton. |
|
|
LimitationThe Alias API does not support messages on lights and shaders. LimitationThe Alias API does not support symmetric layers. As a result, plug- ins such as jptCenterPivot will not produce the correct result on a symmetric object. |
|
|
LimitationIt is not possible for the API to generate polyset prelighting information. WorkaroundIn Alias, use the Render -> Polyset prelight menu item to create the prelighting information.
LimitationThere is no API method available for changing a set type (exclusive versus multi) once the set is created. WorkaroundRecreate the set with the required type and add the appropriate objects to the newly created set. Delete the original set which is now empty. LimitationThe AlSettable::addToSet() method incorrectly returns status values for sObjectInAnotherSet and sObjectInExclusiveSet situations. WorkaroundDetect these two conditions by traversing the set lists in the Universe before calling ::addToSet(). |
|
|
LimitationIf per polygon textures are being used in a polyset, then the AlPolygon::st() method will return a different value than the AlPolysetVertex::st() method. The AlPolysetVertex::st() method does not take into account if per poly textures are on.
|
|
|
LimitationThe AlShell::addToShell() methods use different tolerances in OpenModel versus OpenAlias. It is not possible to set this tolerance through the API so different results may be produced in OpenModel versus OpenAlias with certain models. LimitationThe Alias API in most cases disregards the locked state of objects. As a result it may be possible to change the parameter of an object by using the API even though it has been locked through an Alias Editor. |
|
94565 |
LimitationThe OpenModel library libalias_api.so is now linked with the multigot option. Core dumps may result, if you attempt to use the OpenModel libraries on an unsupported version of Irix with unsupported compilers. Please consult the"Development Environment Requirements" section of the Online API documentation. General Notes
Existing LimitationsLimitationUsing the C++ new and delete functions to create and destroy memory for blind data can lead to program errors. Alias and OpenModel will use malloc() and free() for its blind data memory creation and destruction routines. Problems may occur if the blind data has been created with the new command. There are several cases where Alias or OpenModel will need to remove or re-create blind data memory storage during normal operations. For example, if a delete all operation is performed, all blind data is removed. Also, if blind data is saved in the wire file, when the file is read in, the blind data storage will be re-created. LimitationAlias and the API do not handle surface form the same way. After building a Closed surface in Alias the information window will report that the surface is Open. For efficiency, Alias does not keep track of the closed state of a surface. WorkaroundUse the API methods AlSurface::vForm() or uForm() to test the points of a surface to determine if it is closed or not. LimitationThe AlAreEqual(const AlObject* o1, const AlObject* o2) method for detecting if two API objects are equal has a significant FALSE condition. If both pointers, o1 and o2, are equal and NULL, FALSE is returned. WorkaroundTest o1 and o2 before calling this function. LimitationThe method AlCopyOptions::setGroupCopy( boolean ) always produces the same result regardless of what its Boolean parameter is set to. The effect in the API is that group copy is always ON. Group Copy Off ( Edit > Duplicate Object) within Alias invokes a continuous function for copying that cannot be supported in the API. LimitationThe plug-in scheme editor options are not restored correctly when Alias restarts. WorkaroundRestore the options after the plug-in is loaded. LimitationThe firstShader() methods currently return the last shader that was evaluated. Copying shaders from one object to another will reverse the shader list. (Write out the SDL to illustrate this behavior.) This behavior will lead to problems when layered shaders are used, because the order of the shaders will be incorrect. WorkaroundCache the shader list and add the shaders to the new object starting at the tail of the list. (Please keep in mind that if we fix this bug in future releases, this solution will cause the list to be in the wrong order again.) LimitationPlug-in DSOs are not unloaded when Alias exits. As a result, static destructors are not called when Alias exits. The plugin_exit() function will still be called when Alias exits. Any saving of state required by a plug-in can be performed in the plugin_exit() routine. WorkaroundUnload the plug-in manually through the Plug-in Manager window to call the static destructors. LimitationNURBS curves and surfaces are not parameterized from 0 to 1. WorkaroundYou must retrieve the knot vector for any geometry and use the minimum and maximum knot values as the limits of the parameterization for the geometry. LimitationLink errors may occur if you are using the 7.1 compilers under IRIX 6.2. WorkaroundTry using the -old_ld link option to the linker. LimitationAlContinuousFunction::setPrompt() does not display the prompt right away. WorkaroundUse AlPrintf(kPrompt,...) to output the prompt string (without formatting) in the "init" callback of the continuous function. To exclude formatting, end the prompt string before the first % symbol. LimitationA plug-in with undefined symbols will load without an error on IRIX 6.2, but invoking the plug-in will cause a core dump. A problem exists with the dlopen() system call in IRIX 6.2 which causes the core dump. WorkaroundApply SGI patch 2458 (or a later incarnation) to fix this dlopen() problem. If there is an undefined symbol within the plug-in, the plug-in will fail to load and an error will be written to the prompt line. Note: please check the Alias qualification chart to find the recommended patch set which 2458 has become a part of. LimitationWhen programming plug-ins, the function AlFunctionHandle::removeFromMenu causes a fatal error under certain circumstances. WorkaroundAvoid using the function. It is usually unnecessary, because the function AlFunctionHandle::deleteObject() automatically performs this operation properly. LimitationUnloading an active continuous plug-in through the Plug-in Manager can cause a core dump under certain situations. WorkaroundDo not allow the plug-in to be unloaded if it is active. A global variable within the plug-in can be set to track its active state. Set this variable to TRUE in the init() function and FALSE in the cleanup() function. Within plugin_exit(), if the plug-in is active, return a 1 so that the unloading of the plug-in will fail. This test should be done before the deleteObject() methods are called in plugin_exit(). LimitationWhen retrieving files, the Universe's blind data may get obscured because two blind data packets with the same user type have been attached to the universe. WorkaroundTo see two data packets with the same user type, you must remove the first one; the second one will then be visible. Try to avoid using mutiple packets with the same IDs. The order in which these packets will be returned by the blindData() methods is undefined. LimitationWhen setting a plug-in's integer slider definition, you can set the range argument to any value in the integer range; however, the slider will only give values between -100 and 100. Values less than -100 or greater than 100 can still be entered in the associated text field, but the slider will only give values between -100 and 100. WorkaroundUse the undocumented argument slider_range to change the min/max slider range values from their defaults. For example, to define an integer slider with a range of -200 to 1000, use the following Scheme statement: (list `slider_range -200 1000) General Limitations
|
| Copyright © 1998, Alias|Wavefront, a division of Silicon Graphics Limited. All rights reserved. | Please send questions or comments regarding the documentation to: [email protected] |