Difference between revisions of "Golem Studio"

From Oldunreal-Wiki
Jump to navigation Jump to search
(Initial draft, still vastly incomplete)
 
Line 61: Line 61:


A GEM file can contain multiple objects in the same category.
A GEM file can contain multiple objects in the same category.
=== Object attributes ===
Each object has a set of attributes. Golem Studio allows you to view and add attributes to each object freely. Attributes must have a name, array index, type and value. The attribute name is what gives the Golem Studio information about which attribute you intend to modify (unfortunately, you need to enter the name manually for most object types, and there is no documentation about what names are valid for what types). The array index is an integer (its function is unknown, possibly attribute ordering). Valid attribute types are integer value, floating-point value, text string and object reference. The value is, of course, the value of the attribute, limited by the attribute type.
Most objects have pre-defined attributes, most in the form of statistics. Those attributes are read-only as they are auto-generated. Some of them, such as the attributes of the Triangles category objects, are not set as read-only, but changing them (or even deleting them) does not have any effect.
= Interface =
[[Image:GolemStudio.png|right|thumb|The Golem Studio window]]
The Golem Studio interface consists of four independent windows. The main window has a menu bar and, when maximised, contains the other three windows inside it. The Workspace window provides a list of folders, files, categories and objects referenced in the open workspace and allows to manipulate them. The Render window shows a rendered preview of a selected entity. The Entity window controls what entity is displayed in the Render window and allows you to change the parameters of the entity render.


[[Category: Mods]] [[Category: Mapping]] [[Category: Unreal II]]
[[Category: Mods]] [[Category: Mapping]] [[Category: Unreal II]]

Revision as of 20:58, 9 June 2012

Golem Studio is a mesh and animation editor that came with Unreal II (specifically, version 1.01). It was created by Legend Entertainment and was used as a companion program to UnrealEd for setting up the meshes and animations of all animated objects in Unreal II, including characters, creatures, some decorations and most weapons.

Program logic

Workspaces

Golem Studio works with files called Golem workspaces (extension .gws). Golem workspaces are a kind of master files that contain references to and control the structure of a Root folder. Golem workspaces can only hold references (they don't have the actual files in them), and only to two types of data - folders and GEM files. Changing anything in the workspace changes the way files are situated on the Root folder, for instance, adding a subfolder to a workspace in the Goldem Studio will also physically add a subfolder into the Root folder. Same thing with GEM files.

GEM files

While Golem workspaces contain references to files, GEM files contain objects (physically, not just references to them, except for a few types of objects). These objects can be of different categories:

Category Type Description
Bone Frames GemBoneFrames These objects contain a set of frames with bone transform information based on a particular bone hierarchy, used for skeletal animation.
Bone Hierarchy GemBoneHierarchy These objects contain a collection of bones organized in a hierarchy, used by bone points and frames objects for skeletal animation.
Bone Weighted Points GemBonePoints These objects contain a set of points and their normals, which are weighted to the bones of a bone hierarchy for smooth skinning. These weighted points are necessary in order to generate point positions from skeletal animation data.
Color/Alpha Frames GemColorFrames These objects contain a set of frames with 32-bit ARGB values capable of being animated on vertices for color & alpha effects.
Entity Blueprint GemBlueprint These objects are blueprints used to create entities at runtime. They contain a reference to a Model object describing the entity's structure, and a set of attachments used to connect other entities to this one.
Entity Script Agent GemAgent These objects contain a rule tree used to determine a set of entity script processes to use based on a small set of input values. The agent acts as an intermediary between a client application and an entity's script processes, translating only a few pieces of input data into choices within a potentially large set of usable entity scripts.
Entity Scripts GemScripts These objects contain command scripts for manipulating entities at runtime, using static animation frame sequences and/or dynamic animation effects.
Level-of-Detail Information GemLodInfo These objects contain triangle Level-of-Detail (LOD) reduction information in the form of a "progressive mesh" capable of choosing its triangle count at will. This data is constructed from the vertices and triangles used by a Model object. Once the data is present, the LOD information can be used to reorder the vertices for LOD compatibility, and then create new reduced triangle sets for lower detail levels.
Lipsync Curve GemLipsyncCurve These objects contain a function curve applied to a set of viseme frames at runtime, for lip-syncing.
Materials GemMaterials These objects contain a set of materials composed of various rendering settings, potentially using multiple texture stages. Each triangle in a model has a single material index which refers to one of the materials within these objects.
Model GemModel These objects describe the structure of a polygonal model used by Entity objects. Models are a combination of various other object types including triangle, vertex, and bone information.
Physical Ragdoll GemRagdoll These objects define a physical "ragdoll" composed of primitive solids and constrained joints. The volumes are associated with hierarchy bones, allowing physics-related abilities to operate on the hierarchy.
Point Normal Frames GemNormalFrames These objects contain a set of frames with uncompressed point normals, used for lighting information during vertex animation.
Point Position Frames GemPointFrames These objects contain a set of frames with uncompressed point positions, used for vertex animation.
Quantized Point Normal Frames GemQuantNormalFrames These objects contain a set of frames with quantized (compressed) point normals, used for lighting information during vertex animation.
Quantized Point Position Frames GemQuantPointFrames These objects contain a set of frames with quantized (compressed) point positions, used for vertex animation.
Triangle Adjacency Links GemTriLinks Marked with OBSOLETE / DELETE IF INDICATED. These objects contain triangle adjacency information for a variety of uses. The adjacency information identifies which vertices are connected to which triangles via shared edges, and so forth. This information is typically generated from the raw triangles of a Triangles object, along with the point indices used by the vertices in a Vertices object.
Triangle Rendering Primitives GemTriPrims Marked with OBSOLETE / DELETE IF INDICATED. These objects contain triangle primitives sorted into material batches for optimized rendering. This information is typically generated from the raw triangles of a Triangles object.
Triangles GemTriangles These objects contain raw triangles which refer to a given material index and three vertex indices.
Vertices GemVertices These objects contain model vertices which refer to a given point index, normal index, color index, and multiple texture UV indices.

To have a working (visible) model, it must have at least Bone Weighted Points, Entity Blueprint, Materials, Model, Triangles and Vertices defined.

A GEM file can contain multiple objects in the same category.

Object attributes

Each object has a set of attributes. Golem Studio allows you to view and add attributes to each object freely. Attributes must have a name, array index, type and value. The attribute name is what gives the Golem Studio information about which attribute you intend to modify (unfortunately, you need to enter the name manually for most object types, and there is no documentation about what names are valid for what types). The array index is an integer (its function is unknown, possibly attribute ordering). Valid attribute types are integer value, floating-point value, text string and object reference. The value is, of course, the value of the attribute, limited by the attribute type.

Most objects have pre-defined attributes, most in the form of statistics. Those attributes are read-only as they are auto-generated. Some of them, such as the attributes of the Triangles category objects, are not set as read-only, but changing them (or even deleting them) does not have any effect.

Interface

The Golem Studio window

The Golem Studio interface consists of four independent windows. The main window has a menu bar and, when maximised, contains the other three windows inside it. The Workspace window provides a list of folders, files, categories and objects referenced in the open workspace and allows to manipulate them. The Render window shows a rendered preview of a selected entity. The Entity window controls what entity is displayed in the Render window and allows you to change the parameters of the entity render.