NNS_G3D_GET_ANM macro bugg3dcvtrg3dcvtrg3dcvtr does not return correct value on an errorframe_step uniformity process in g3dcvtrg3dcvtr specificationsNODEDESC command of the SCB command was not issued correctly when converting g3dcvtr's IMD fileg3dcvtr-tex-nomerge option to g3dcvtrg3dcvtr was working incorrectlyg3dcvtr for NITRO intermediate file version 1.6.0g3dcvtr for specifications added to NITRO intermediate file version 1.5.0NNSG3dRenderObj and NNSG3dRS structuresg3dcvtrg3dcvtrpos_scale value of <box text> when using g3dcvtrg3dcvtr summary display format (NSBMA, NSBTP, and NSBTA files)NNS_G3dGeSendDLNNS_G3dGlbFlushP, NNS_G3dGlbFlushVP, and NNS_G3dGlbFlushWVP functionsNNSG3dGlb structureg3dcvtr summary display format (NSBCA and NSBVA files)g3dcvtr error displayg3dcvtr outputNote 81-R03: (Library) The changes for the material skipping bug prevented materials status from being updated in certain cases, causing invalid colors to be applied to polygons. The changes have been reverted provisionally.
Because no special restrictions are necessary, the default value for the maximum number of shapes in one model has been changed from 64 to 256.
Added the -we option for handling warnings as errors.
During the material update process, a material that is hidden or is the same as the immediately previous material should be skipped and not updated. However, this skipping did not occur. That bug has now been fixed.
NNS_G3D_GET_ANM macro bugThe NNS_G3D_GET_ANM macro was using undefined variables as arguments. That has been fixed.
g3dcvtrThe g3dcvtr tool in the release package had a check feature for debugging purposes that should have been disabled but was not. This feature caused errors to result from data that could previously be converted. This problem has been fixed.
When the intermediate file contained elements with more than 2 MB of content, an error would occur. That has been fixed.
When the name of a node or material was left blank, an error was not correctly output. That has been fixed.
Added support for NDMA added with the TWL.
g3dcvtr for irregular matricesWhen the modeling matrix of a node referenced from a weighted envelope is a non-regular matrix, an error is now output.
frame_step in g3dcvtrFixed the problem of the constant component of frame_step being employed for all frame steps when the XYZ components of the rotation data of an ICA file or the RGB components of an IMA file met these two conditions.
frame_step of two non-constant components were equivalent
frame_step
g3dcvtrFor ICA, IVA, IMA, ITP, and ITA intermediate files, added a range check for when the animation data are index-referenced.
The format of the Revision History has been changed in the following PDF manuals.
G3D_BinaryFormat.pdf
g3dcvtr_UsersManual.pdf
Changed the notation of the Xerces-C++ license in the document g3dcvtr_UsersManual.pdf.
g3dcvtr does not return correct value on an errorWhen an error occurred, g3dcvtr returned the normal value 0 instead of returning 1. That has been corrected.
frame_step uniformity process in g3dcvtrThe specification for unifying frame_step for the XYZ components of the rotational data in the ICA file has been changed. Before they were unified to the lowest-precision frame_step. Now they are unified to the highest-precision frame_step.
NNS_G3D_USE_FASTGXDMA macro was defined, the transfer method of the geometry command could not be switched even by calling the NNS_G3dGeUseFastDma function. This has been changed so that the transfer method can be switched.
NNSi_G3dAnmBlendJnt function, execution would fail on an assert during normalization if the row vector resulting from blending was a zero vector. This has been changed so that the status before blending is restored if the result of blending is a zero vector.
g3dcvtr specificationsUnder previous specifications, an error would result if the frame_step for the red, green, and blue components were not all the same when converting IMA files. This has been changed so that conversion is performed using the frame_step having the highest precision.
NNS_G3dResDefaultSetup function failed.
NULL would fail on an ASSERT if a numeric value equal to or greater than the number of animations possessing resources was specified for the second argument of the NNS_G3dGetAnmByIdx function.
A problem has been corrected when converting ICA files where the wrong rotate data was being output depending on the combination of frame_size and frame_step_mode being used.
NODEDESC command of the SCB command was not issued correctly when converting g3dcvtr's IMD fileA problem has been corrected when converting IMD files where the NODEDESC instruction of the SBC instruction was not being correctly issued depending on the node configuration and <display>::priority setting.
g3dcvtrCommand-line arguments can now be read from a file. Command-line arguments starting with an at sign (@) are interpreted as a filename past the second character, and the contents of that file are expanded as arguments. Expansion of multiple files and multiple nested layers is possible. An error will result if file access cycles.
-tex-nomerge option to g3dcvtrThe -tex-nomerge option has been added to g3dcvtr. If the texture or palette names are different when using this option, they are not merged even if the data is the same and separate memory is allocated.
Comments for the NNS_G3dGeUseFastDma function have been revised.
A problem where intermediate files that include billboards could not be converted has been corrected.
Fixed bug to smoothly do animations that rotate through small angles.
Bugs in the 2005/06/06 version have been corrected.
When converting ICA files using the –OS option, replay did not work in some cases. This bug was fixed.
When frame interpolation was used with joint animation and the amount of rotations between key frames was large, distortions in the models would increase in size in some cases. This was improved.
In SBC instructions NODEDESC and BBY, with TIMING_C, the NNS_G3D_RSFLAG_SKIP flag for TIMING_B was used by mistake. This problem was fixed. Also in SBC instructions NODEDESC, BBY, and BB, if processing was skipped with TIMING_C, subsequent processing would fail. This problem was fixed.
g3dcvtr was working incorrectlyWhen multiple IMD files were converted, the environment map codes would malfunction. This bug was fixed.
Added the NNSi_G3dFuncSbc_ENVMAP and NNSi_G3dFuncSbc_PRJMAP functions to support environment and projection mapping (orthogonal projection).
The following samples have been added.
EnvMap sample: Displays an environmentally mapped sphere.
ProjMap sample: Displays a projection-mapped (orthogonal projection) sphere.
g3dcvtr for NITRO intermediate file version 1.6.0g3dcvtr now supports NITRO intermediate file version 1.6.0. IMD files that include an environment map and/or projection map can be converted.
Fixed the bug in which the drawing was not performed properly because a portion of the data in the NSBMD file output by g3dcvtr is invalid if classic scale off was configured with a weighted-envelope model (Softimage3D or Softimage|XSI).
The following samples have been added.
Translucent sample has been added. This sample demonstrates the rendering of a model in which translucent polygons overlap.
The binary file format used with G3D is described in NitroSystem\docs\G3D\G3D_BinaryFormat.pdf.
g3dcvtr for specifications added to NITRO intermediate file version 1.5.0Provided support for addition attributes for <material> and <display> elements added with version 1.5.0 of the NITRO intermediate files.
Binary generation has been improved when a billboard is added to a joint with multiple <display> elements.
A bug where thick objects did not appear properly when a Y-axis billboard conversion occurred has been fixed.
A bug where the wrong callback was called when the NNS_G3D_SBC_CALLBACK_TIMING_A_DISABLE macro was defined and G3D was compiled has been fixed.
Added the NNS_G3dAnmObjDisableID and NNS_G3dAnmObjEnableID functions to support the playback of the joint animation in which only some of joints are animated.
If linear is specified for <node_anm_info>::interpolation in the ICA file, when the decimal part of the frame is specified, the joint animation is played back by performing linear interpolation with neighboring frames. To loop playback of the animation, <node_anm_info>::interp_end_to_start must be set to ON.
Improved the implementation of the NNSi_G3dFuncSbc_NODEMIX function and accelerated display of models that have weighted envelopes.
NNSG3dRenderObj and NNSG3dRS structuresAdded accessor for the NNS_G3dRenderObj and NNS_G3dRS structures.
The following samples have been added.
PartialAnm1 sample has been added. The sample demonstrates partial playback of joint animation.
PartialAnm2 sample has been added. This sample demonstrations partial playback of a joint animation, but for cases more complicated than those covered by PartialAnm1.
SlowMotion sample has been added. This sample plays joint animations in slow motion.
SharedMotion sample has been added. This sample plays the same joint animation resource using two models with different shapes.
ScreenUtil sample has been added. This is a sample of the coordinate conversion utility API. Converts from world coordinates to BG screen coordinates or from BG screen coordinates to world coordinates.
A bug in the 2004/10/12 version that kept animations with alpha values for the material color animation from playing back properly has been fixed.
A bug where redundant animation data near the last frame was sometimes being generated if the frame step was set to 2 or 4 when converting ICA files with g3dcvtr has been fixed.
A bug where invalid playback resulted when the frame step was set to 2 or 4 if there were frames with scale greater than or equal to 8 or less than or equal to 0.125 in the joint animation has been fixed.
A bug where an invalid display would result if the camera was far or close when using weighted envelopes because it caused the temporary variable being used in G3D to overflow has been fixed.
g3dcvtrA bug where some data was output improperly when converting multiple IMD files into one NSBMD file with g3dcvtr has been fixed.
g3dcvtrA bug where inappropriate alignment of the second and subsequent animation data was used when converting multiple IMA files with g3dcvtr has been fixed.
pos_scale value of <box text> when using g3dcvtrA bug where the pos_scale value of <model_info> was output as data corresponding to the pos_scale value of <box_test> used by g3dcvtr has been fixed.
The NNSi_G3dFuncSbc_NODEMIX function was added, and now models having weighted envelopes converted with g3dcvtr can be displayed. In addition, the NSBMD file format has been extended, and IMD files must be converted again.
Callback specifications were changed. In some cases, they may not be compatible with previous versions.
NNS_G3dRenderObjSetInitFunc function, you can execute functions that use the NNSG3dRS structure as an argument immediately before rendering.
NNSG3dRS callback function pointer for each SBC instruction, one callback can be registered to each type of SBC instruction during rendering. This change makes it easy to use multiple callbacks.
NNS_G3dRenderObjSetCallBack is now invalid.
callback4 and callback5 samples.
The performance of material color animations and texture SRT animations was improved, and the code was reduced in size. Fixed the bug that always enabled the specular reflection shininess table when a material color animation was executed.
The following samples have been added.
RecordMtx sample has been added. Processing similar to the callback2 sample is possible without using a callback function by converting IMD files using the -s option of g3dcvtr.
ManualSetup sample has been added. This sample demonstrated how to set up a loaded NSBMD file without using the NNS_G3dResDefaultSetup function.
callback5 sample has been added. A sample that uses callbacks has been added along with the ability to register multiple callback functions.
ShadowVolume sample has been added. This sample demonstrates how to display a shadow volume using the G3D library.
Envelope sample has been added. The sample compares the display quality and performance when weighted envelopes versus when they are not used.
g3dcvtr summary display format (NSBMA, NSBTP, and NSBTA files)The format of the summary display shown when NSBMA, NSBTP, and NSBTA files are passed to g3dcvtr as arguments has been changed.
NNS_G3dGeSendDLA bug has been fixed where execution would hang if the NNS_G3dGeSendDL function was used while GX_DMA_NOT_USE was selected with NITRO-SDK's GX_InitEx function.
A bug where texture scaling became invalid when a textured model was created using SoftImage3D has been fixed.
Fixed bug where the light direction was being set improperly by the NNS_G3dGlbFlushWVP function.
A bug where large textures were sometimes not displayed has been fixed.
The current position coordinate and direction vector matrices can be obtained with the NNS_G3dGetCurrentMtx function.
NNS_G3dGlbFlushP, NNS_G3dGlbFlushVP, and NNS_G3dGlbFlushWVP functionsThe various functions that initialize the current matrix and so on before rendering were broken into three types. These functions differ only in how they set the current matrix, as described below.
NNS_G3dGlbFlushP function sets the projection transformation matrix as the current projection matrix, combines the camera matrix and the modeling matrix, and sets the resulting matrix as the current position coordinate matrix and the direction vector matrix.
NNS_G3dGlbFlushVP function combines the projection transformation matrix and the camera matrix, sets the resulting matrix as the current projection matrix, and sets the modeling matrix as the current position coordinate matrix and direction vector matrix.
NNS_G3dGlbFlushWVP function combines the projection transformation matrix, the camera matrix, and the modeling matrix, and sets the resulting matrix as the current projection matrix and sets the identity matrix as the current position coordinate matrix and direction vector matrix.
Due to the above function differences, the current matrices obtained during rendering will be the camera coordinate system, world coordinate system, and local coordinate system matrices, respectively. By using these three functions accordingly, calculations such as multiplying an inverse matrix can be omitted when getting necessary data.
The NNS_G3dGlbFlushP function works the same as the existing NNS_G3dGlbFlush function. The same is true for the NNS_G3dGlbFlushWVP and NNS_G3dGlbFlushAlt functions.
NNSG3dGlb structureAdded accessor functions that read from and write to the data in the NNSG3dGlb structure.
Unused code has been deleted.
g3dcvtr summary display format (NSBCA and NSBVA files)Changed the summary display format used when NSBCA and NSBVA files are passed as arguments to g3dcvtr.
A bug has been fixed where scaling was not applied correctly with the NNS_G3dDraw1Mat1Shp function.
Fixed bug that caused the NNS_G3dDraw1Mat1Shp function to incorrectly render models that use textures based on TexCoord source.
Added the NNS_G3dDraw1Mat1Shp function, which allows a simple object to be rendered quickly.
Fixed bug in Geometry FIFO.
A display list that is shorter than 256 bytes is transferred via the CPU without using the DMA.
g3dcvtr error displayImproved the error display of the error in the input XML file.
g3dcvtr outputBecause the output of g3dcvtr was improved, the stall period that is related to the DMA transfer of the display list was shortened.
Fixed bug where the child node list output by the NNS_G3dGetChildNodeIDList function was not correct.
Fixed bug that did not play back the animation when multiple animations were added to the same rendering object.
A bug where fully weighted envelope models were not being converted correctly by g3dcvtr has been fixed.
The library now supports the playback of material color animations.
The library now supports the playback of texture SRT animations.
Bugs in texture matrix calculation, animation blending, texture pattern animation, and so on have been fixed.
CONFIDENTIAL