Objects can be created by grouping tiles together. Object instances can then be added to the scene. Editing one instance allows all instances to be updated with the same changes.
To create an object, you must first highlight the tiles that will be grouped together while in Edit mode. Once highlighted, you can right click to open the context menu, then select the Create Object menu item within the Faces menu. You can also click the Create Object button in the Scene tab. Doing so will remove the tiles and replace them with an instance of the newly created object. Instances can be selected like tiles, moved, rotated, and scaled. The new object will also be listed in the Scene tab, and can be dragged into a layer to help organize your list of objects. When you create an object, its origin point will be placed relative to where the crosshair is located. Check theObject Points section below on how you can change this position.There are two ways to rename an object. You can double click the name of the object listed in the Scene tab, or you can right-click and choose the Rename Object menu item.
- Apply name to Instances
You can use this option to apply the name of an Object to any instances belonging to the object.
Copy/pasting only works with tiles, but you can duplicate multiple instances by selecting them, right-clicking on one, and choosing the Duplicate Instance(s) item from the context menu that pops up. This will duplicate all of the selected instances with the new instances selected.
🐊- Duplicate Instances Area
This opens a panel where you can specific the number of duplicates to make along the x,y,z axis, as well as the spacing along the x,y,z axis.
- Combine Instances
Selected instances in the scene can be combined into a new Object. This is useful if you want to merge multiple instances together without having to deconstruct them first. While in Edit mode, select the object instances in the scene. When they are highlighted, right-click an instance to open a context menu and choose Combine Instances or Combine Instances (Object only). The first option will replace the instances in the scene with a new instance of the new object, while the (Object only) option will only create a new object without placing it in the scene and without removing the other instances.
Instances in the scene can be deconstructed into separate tiles again. This may be useful if you want to make a change to an instance without affecting all of the instances. While in Edit mode, select the object instance in the scene. When it is highlighted, right-click to open a context menu and choose Deconstruct Instance.
- Export Selected Objects
If you select objects in the 3d scene, you can right click them to open a context-menu and chooseExport Selected Objects to open the Export panel and have the selected objects be automatically checkmarked in the list.
While editing an instance, you can modify each tile that constructs the object. You can add or remove tiles to the object as well and these changes will be reflected in all of the instances. Basically every operation you can perform on a regular tile can also be performed when editing an instance's tiles. To edit an object, select an instance in the scene and right-click while in Edit mode. A menu will appear with the option to edit the instance. This will activate the instance's edit mode, displaying a yellow box around the instance. When you are done editing, you must deselect everything and then pressEnter to exit the instance's editing mode. You can also pressEnter to begin editing the instance.🐊There is an option in the settingsObject Mode Constraint. If enabled it will prevent selecting/editing tiles that are not part of the object when you edit an instance. This will help prevent you from editing other things while you are editing an instance.- Exit Editing an Instance
Deselect all faces and vertices of tiles and then pressEnter to stop editing the object.
Instances / Prefab Brush
🐊Instances can be added to the scene in two ways. One way is through the menu when right-clicking an object or instance in the Scene tab list and selectingAdd to Scene. This will place the object at wherever the current position is of the 3d cursor. Another way is by left-clicking the object or instance in the list while in Draw mode. This will allow you to place objects in the scene near your mouse, relative to an invisible plane that sits against the 3d cursor (This acts just like when you place single tiles). You can also erase the instance by lining up the Prefab Brush with an instance, and right-clicking it in the scene, exactly as you would do with a normal tile.The spacing of the prefab brush can be adjusted. There are inputs at the bottom of the Scene panel to specific the width and height in pixels that the prefab brush aligns to. The spacing will be relative to the 3d crosshair position. This acts similar to the spacing of tiles when they are drawn to the scene.🐊- Q , E Rotate the prefab brush. Rotating the brush in combination with rotating the camera angle allows every 90 degree orientation to be attainable.
- Shift+Q , Shift+E To help keep rotation simpler, Holding shift will allow the object to rotate clockwise or counter-clockwise.
There is an option in the Settings to orient the Prefab Brush relative to the camera direction. This can be enabled by going to Edit > Settings > Draw Mode > Orient Prefab Brush to Camera.
Nested Instances
Below the Objects list is the Instance list. All of the instances in the scene are listed in this section. You can click and drag instances into other instances to nest them inside each other (make sure to hover over the indented horizontal slot while dragging. A highlight line will appear to show where exactly the item will be moved to). This essentially groups them together and allows for more control. When clicking on an instance from the Instance list, it will change the prefab brush to represent the current instance and any nested instances while in Draw mode. This way you can add a group of instances to the scene and maintain the same nesting order! You can toggle between World and Local space when nesting Instances via the button in the lower right of the Scene panel.There is also an option to hide/show the instance list. It is located via the menu button located in the lower right corner of the Scene panel.
Object Points
🐊Each object has an origin point that helps with the placement of the instances within the scene. At the time of creating an Object, the current location of the 3d cursor will determine where to place the origin point relative to the rest of the tiles in the object. The origin point can be re-positioned afterwards, as well as new points added for custom data.- Reposition a point
In the Scene tab, when an instance is being edited, the drop-down menu at the bottom of the scene tab window will list all the Object's points.
Selecting one will display the point (a white diamond shape) within the scene where it is located relative to the instance. Clicking the button next to the drop-down list will re-position the point to the current location of the 3d cursor.
- Rename a point
After selecting a point from the dropdown list in the scene tab while editing an instance, you can click the T icon to rename the point.
The origin point can't be renamed, but any additional points you have added can be renamed. - Add/remove a point
At the bottom of the Scene tab window, there are two buttons to add or remove object points.
Points can be added/removed while editing an instance. The only point that can't be removed is the Origin point.
There is also an option in the Layer context-menus, that allow you to set the origin point of all the Objects within the Layer (including sub-layers). This can be accessed by right-clicking a Layer listed in the Scene panel and choosingSet All Object's Origin Points To Crosshair. Doing so will set every origin point to the current location of the 3d crosshair. It will do this relative to the first Instance of each Object, so it is mainly useful if you only have one Instance per Object.
Object Context Menu
This menu allows you to perform various operations related to an object. To open the menu, go to the Scene tab and right-click an object that is listed. See below for more information regarding the various menu choices.
This will place an instance of the object at the location of the 3d cursor in the scene without any rotation applied. If you are using Tilt mode, you can enable an option in the Settings > Miscellaneous panel to orient it relative to the camera and tilt.
This will show an input box to type in the new name for the object.
- Properties
This will open the Properties panel for an object. From there you can enable Billboarding and Mirroring of the object and also define custom data your objects and instance can hold. Alternatively you can Double-click the listed object (to the side of the name) to open the properties.
All instances of the object in the scene will become highlighted/selected.
All instances of the object in the scene will become unhighlighted/deselected.
If you want to hide or show all the instances of a specific object. If the instances are currently hidden/invisible, they will become visible for example.
- Replace Selected Instances
Replaces any selected instances in the scene with new instances of this specific Object type.
- Clone Object
Clones the object, adding the new object to the list. After cloning the object, you can then add instances of the new object to the scene.
- Delete Object/Instances
This completely removes the object and all of its instances from the scene.
- Export Instance Data
If you have exporting activated, you can save data related to an object, such as the coordinates and rotation of each instance in the scene, as well as any additional object points it has. This may be useful if you intend to load these objects separately in another program and need the coordinates so that you can line them up accurately with the rest of the scene.- The data exports as a json formatted object. The json object contains a "name" variable with the string value that represents the object's name. It also contains a "points" variable with an array of objects representing the object points. Each of these has a "name" variable that represents the name of the point ("Origin" for example, or "Point"). You can rename the points in Crocotile to your liking (see the Object Points section above for how to do that). There is also a "pos" variable that represents the point's "x", "y", and "z" coordinates. There is also a billboard property that specifies if this object is a billboard, and whether instance's are locked to their local y axis. Next there is a custom variable, which holds custom data that you can define in your object's properties. Lastly, there is an "instances" variable with an array that holds data for each instance belonging to the object.
- Here is the json structure of the object:
{"name":"Object 1","points":[ {"name":"Origin","pos":{"x":0,"y":0,"z":0}},{"name":"Point","pos":{"x":0,"y":0,"z":0}} ...],"billboard":{"enabled":false,"y":false},"custom":[ {"name":"Name","uuid":"E6205BF6-0FA3-47F7-90BD-7D895DAD9DD1","type":"object","valueType":"number","value":25},{"name":"Name2","uuid":"19E722F6-E597-489A-B766-BA575DB71D63","type":"instance","valueType":"string","value":"hey"} ...],"instances":[]}- Every index in the "instances" array will contain an object that holds data for an instance's position, rotation, and scale. It also includes the instance name, uuid (a unique value that identifies this instance), and also a parent uuid if the instance is a child of another instance. Each index represents one instance:
{"name":"Instance 1","uuid":"0D08FF35-7E44-422B-9C62-4F104857209F","parent":null,"pos":{"x":0,"y":0,"z":0},"rot":{"x":0,"y":0,"z":0,"order":"XYZ"},"sca":{"x":0,"y":0,"z":0},"custom":[ {"uuid":"19E722F6-E597-489A-B766-BA575DB71D63","value":"hi"} ...]}, ...]}, ... - Export Misc
Miscellaneous data that can be exported.- Export Grid Map
This exports data corresponding to a 3d grid and is useful for defining cells for collisions or similar cases. More details as well as an example can be found in the Export section of this document.
- Export Line Data
This exports line data. Each line consists of a start position and an end position. Each tile will make four lines that define its edges.
- Generate NormalMap
This is an experimental feature. It will generate a normal map of the prefab object. Z axis is considered the direction out from the image.
- Generate HeightMap
This is an experimental feature. It will generate a height map of the prefab object. By default, it will use the origin point of the object as the ground level (Min set to 0 pixels), and check the Z values of the tile's vertices to generate the height map values. The highest Z value will be considered the highest point (Max set to Vertex).
There is anAxis option that can be changed to control which axis to generate the heightmap from. TheMin option controls the lowest position, which can be either the lowest vertex (along the chosen axis) in the object or an amount of pixels offset from the origin point of the object. Likewise, there is aMax option that controls the highest position. Any positions beyond this range will be clamped in the heightmap.
- Export Obj
If you have exporting activated, a save dialog box will appear allowing you to save the object as an .obj , .gltf , .glb, or .dae file that you can then import into other programs. If the object consists of multiple textures, you would need to export for each tileset/texture image as explained in the exporting section of this document. Or export with a MTL file to include all tilesets. You can also batch export more than one object at the same time by choosing Export Objects in the File menu.
- Export Prefab
If you have exporting activated, a save dialog box will appear allowing you to save the object as its own prefab that can be loaded into any crocotile3d project. All textures that the object uses will be saved and when imported they will be added as well. There is an option in the tileset menu that allows combining two tileset/texture images together in the case that importing creates duplicate images.
Instance Context Menu
This menu allows you to perform various operations related to instances. To open the menu, go to the Scene tab and right-click an instance that is listed in the Instance list. See below for more information regarding the various menu choices.- Add to Scene
This will place an instance (including nested instances) at the location of the 3d cursor in the scene without any rotation applied. If you are using Tilt mode, you can enable an option in the Settings > Miscellaneous panel to orient it relative to the camera and tilt.
- Rename Instance
This will show an input box to type in the new name for the instance.
- Select
The instance will become highlighted/selected.
- Deselect
The instance will become unhighlighted/deselected.
- Select all
The instance and all of its nested instances will become highlighted/selected.
- Deselect All
The instance and all of its nested instances will become unhighlighted/deselected.
- Select all (specific)
All the nested instances of a specific object type that you choose will become highlighted/selected.
- Deselect All (specific)
All the nested instances of a specific object type that you choose will become unhighlighted/deselected.
- Nest Selected
This will add all the selected instances/bones in scene as children of the listed entity that this menu item was selected from. This operation will keep the nesting structure, reparenting only the top level entities.
- Duplicate
Duplicates this specific instance, including any animations.
- Duplicate All
Duplicates this specific instance plus any nested objects/bones, including any animations.
- Mirror
- X Axis
- Position
- Rotation
- Scale
- Pos/Rot
- Pos/Rot/Sca
- Animations
- Position
- Rotation
- Scale
- Pos/Rot
- Pos/Rot/Sca
- Y Axis
Same options as X axis.
Mirrors the specific properties or animations of this instance.- Mirror All
Mirrors the specific properties or animations of this instance as well as any nested object/bones.
- Delete Instance
This completely removes the instance and its nested instances from the scene.
- Export Obj
If you have exporting activated, a save dialog box will appear allowing you to save the instance as an .obj , .gltf , .glb, or .dae file that you can then import into other programs. Exporting an instance will combine any nested instances with it.
3d Scene Context Menu
When you select instances in the 3d viewport, you can right-click on them to open this context menu (Must be in Edit Mode). See below for more information regarding the various menu choices.- Edit Object
This will enter Object Edit Mode, allowing you to edit the object's tiles. You can press Enter to exit Object Edit Mode.
- Properties
- Object
This will open the Properties panel for the selected prefab object.
- Instance
This will open the Properties panel for the selected instance.
- Move Crosshair to Instance
This will move the 3d crosshair to the position of the object's origin point.
- Move Instance to Crosshair
This will move the selected instance to the position of the 3d crosshair.
- Set Tilt to Instance
The Tilt of the 3d crosshair will be set to the object's orientation. You can also toggle the Gizmo Alignment option to auto align it to the selected object.
- Reset Rotation(s)
Any selected instances will have their rotations reset.
- Look at Crosshair
This will point the Instance towards the current Crosshair position.
- Move Origin to Crosshair
Moves the Origin point of the selected Object to the current position of the 3d crosshair.
- Duplicate Instance(s)
This will duplicate all of the selected instances with the new instances selected.
- Duplicate Instance(s) Area
This opens a panel where you can specific the number of duplicates to make along the x,y,z axis, as well as the spacing along the x,y,z axis.
- Duplicate
Duplicates this specific instance, including any animations.
- Duplicate All
Duplicates this specific instance plus any nested objects/bones, including any animations.
- Mirror
- X Axis
- Position
- Rotation
- Scale
- Pos/Rot
- Pos/Rot/Sca
- Animations
- Position
- Rotation
- Scale
- Pos/Rot
- Pos/Rot/Sca
- Y Axis
Same options as X axis.
Mirrors the specific properties or animations of this instance.- Mirror All
Mirrors the specific properties or animations of this instance as well as any nested object/bones.
- Remove Instance
This will remove the selected instance.
- Combine Instances
This will replace the selected instances in the scene with a new instance of a merged object.
- Combine Instances (Object only)
This will create a new merged object, but it will keep the unmerged instances in the 3d scene.
- Deconstruct Object
Instances in the scene can be deconstructed into separate tiles again. This may be useful if you want to make a change to an instance without affecting all of the instances.
Properties
Right-click an object listed in the Scene tab and choose Properties. Alternatively you can Double-click the space to the side of its name to open the Properties. This will open a panel with special options such as Billboarding, Mirroring, and Custom.
With Billboarding enabled, instances of the object will always face the camera. You can also choose to lock it to the Y axis, which will make it keep its Y orientation while facing the camera. With this toggled you can rotate the object and it will keep its local Y orientation. When enabling billboarding, it is important to understand that the object should face down the Z axis. If you have tiles facing down a different axis, it may appear invisible when enabled because those will face away from the camera.This setting allows you to change the UV Animation based on the camera angle. You also can choose which directions to use. Simply add the appropriate suffix (_N, _NE, _E, _SE, _S, _SW, _W, _NW) to the end of your UV Animations. When the camera rotates, the UV Animation will automatically change to the appropriate one. Check the video for a more in-depth look at how it all works.🐊
Enabling Mirror mode will cause all the tiles within an object to have a mirrored version of itself. Any changes to a tile will be updated in the mirrored version. This may be useful if you want to create a symmetrical object- you can create one side and as you are creating it, the other side will be auto-generated. It will retain symmetry across the origin point of the object. Check the Object section of this document to learn how to reposition the origin point.There is also an option to "Merge to Object." This will merge the mirrored tiles into the Object and deactivate mirroring. This essentially converts the mirrored tiles into normal tiles that you can then edit.- Shadows
If you are using Lights in the scene that cast shadows, you can control which objects cast shadows and receive shadows. By default objects will cast and receive shadows, but you can disable this in the object's properties. See the Lights and Shadows section below for more information on how to setup lights and shadows in your scenes.
- Skin
Enabling skinning will allow you to attach bones to the Object. Each vertex can be assigned up to four bones and will morph when the bones move based on how they are weighted. A root bone needs to be selected for the Skinned Object. For more information, check the Skinning section of this documentation.
- Custom
Objects and instances can be given custom data! In this section, you have the option to add boolean, enumerator, number or string values to the Object or its Instances. When you add a property, it will be displayed in the corresponding list. Then you can define its name, type, and default value. After adding a custom Instance property, you can access an Instance's properties in the same way you entered the Object's properties; by double-clicking the instance in the instance list of the Scene panel, or right-clicking and selecting Properties. From there you can set a unique value instead of the default value.
You can also add Global custom properties. Click the Global button in this section to open another panel where you can create the properties. These Global properties will then be visible on any Object or Instance depending on whether the Global property is for an Object or for an Instance. This way you won't have to create a custom property multiple times for multiple objects if you need them all to have the same property.
🐊Each Prefab Object can have itsSkin property enable in the object's properties panel. A Skinned Object can have Bones attached to it which can then be used to bend and morph the vertices of the tiles belonging to that object. The Bones construct a Skeleton that acts as a Rig for your 3d model, and this Rig can be posed and animated.Bones

Bones can be added to the project by opening the menu at the top of the Scene panel and selectingAdd Bone or by clicking the Bone button at the top of the scene panel.
Bones can be nested inside each other, allowing Bones to become children of other Bones. Simply click and drag a Bone inside another Bone listed in the Scene panel to nest them together. By nesting them together, you can create a Skeleton of connected Bones that can be bound to the Skinned Object.
Bones can be manipulated just like Object Instances can be. You can select them as you would select any instances, and move them with the WASD keys or the Gizmo. You can move, rotate, and scale bones, and they can also be animated just as you would animate an Object Instance.Within the Scene dropdown menu, there is an option toHide/Show All Bones. This allows you to toggle on/off the rendering of the bones. If you have any instances nested inside bones, those will still be visible.Properties
Double-clicking the bone listed in the Scene panel will open its properties panel. You can also right-click and selectProperties from the context-menu. Here you can set the visual length and thickness of the bone (this does not set its scale). Alternatively, you can set the Length and Thickness of bones that are selected in the 3d scene by going to the Transform panel, and scrolling to the Skin section. Here there are inputs where you can set the Length and Thickness.Scene Context Menu
Right-clicking a bone listed in the Scene panel will reveal a context-menu with the following options.- Show/Hide Bone
This will show/hide the bone, essentially turning it on/off.
- Rename Bone
This will show an input box to type in the new name for the bone. Another way is to simply double-click the bone's name.
- Properties
This will open the Properties panel for a bone. From there you can set the properties of the bone. Alternatively you can Double-click the listed bone (to the side of the name) to open the properties.
- Select
Selects this bone located in the 3d scene.
- Deselect
Deselects this bone located in the 3d scene.
- Select All
Selects this bone and all nested bones located in the 3d scene.
- Deselect All
Deselects this bone and all nested bones located in the 3d scene.
- Nest Selected
This will add all the selected instances/bones in scene as children of the listed entity that this menu item was selected from. This operation will keep the nesting structure, reparenting only the top level entities.
- Duplicate
Duplicates this specific bone, including any animations.
- Duplicate All
Duplicates this specific bone plus any nested objects/bones, including any animations.
- Mirror
- X Axis
- Position
- Rotation
- Scale
- Pos/Rot
- Pos/Rot/Sca
- Animations
- Position
- Rotation
- Scale
- Pos/Rot
- Pos/Rot/Sca
- Y Axis
Same options as X axis.
Mirrors the specific properties or animations of this bone.- Mirror All
Mirrors the specific properties or animations of this bone as well as any nested object/bones.
- Restore Pose
If a bone is posed differently from its base pose, this will reset it. The base pose of a bone is set while editing the Skinned Object that the bone is bound to.
- Restore Pose All
This will set the bone and all of its nested bones to their base pose. The base pose of a bone is set while editing the Skinned Object that the bone is bound to.
- Remove Bone
Removes the bone from the scene.
3d Scene Context Menu
When you select bones in the 3d viewport, you can right-click on them to open this context menu (Must be in Edit Mode). See below for more information regarding the various menu choices.- Move Crosshair to
- Bone HeadMoves the 3d crosshair to the bone position.
- Bone TailMoves the 3d crosshair to the tip of the bone.
- Move Bone to
- CrosshairMoves the bone to the 3d crosshair position.
- Parent Bone HeadMoves the bone to the parent bone position.
- Parent Bone TailMoves the bone to the tip of the parent bone.
- Look at Crosshair
This will point the bone towards the current crosshair position.
- Duplicate
Duplicates this specific bone, including any animations.
- Duplicate All
Duplicates this specific bone plus any nested objects/bones, including any animations.
- Mirror
- X Axis
- Position
- Rotation
- Scale
- Pos/Rot
- Pos/Rot/Sca
- Animations
- Position
- Rotation
- Scale
- Pos/Rot
- Pos/Rot/Sca
- Y Axis
Same options as X axis.
Mirrors the specific properties or animations of this bone.- Mirror All
Mirrors the specific properties or animations of this bone as well as any nested object/bones.
- Restore Pose
If a bone is posed differently from its base pose, this will reset it. The base pose of a bone is set while editing the Skinned Object that the bone is bound to.
- Restore Pose All
This will set the bone and all of its nested bones to their base pose. The base pose of a bone is set while editing the Skinned Object that the bone is bound to.
- Remove Bone
Removes the bone from the scene.
Skinned Objects
When you have a Skeleton built that you want to bind to an Object, double-click the Object listed in the Scene panel. This will open the Properties panel for the Object. There is a Skin section where you can enable the Skin. Once the Skin is enabled, a new skeleton container will be nested inside the instance listed in the Scene panel. This container is where you will place your bones that you want the Skin to be bound to. If you don't have any instances of the Object in the scene, you will need to first add one in order to attach bones to it.Vertex Weights
With a Skeleton bound to a Skinned Object, vertices can then be influenced by the bones in the Skeleton. Each vertex can be assigned up to four bones with a corresponding weight value for each one. These weights determine the amount of influence each bone has on the vertex. For example, you can have one bone influencing a vertex by 20%, another bone influencing it by 30%, and a third bone influencing it by 50%. The total amount of influence of the bone assigned to a single vertex should equal 100%.Since it can be confusing to calculate this percentage for every bone, Crocotile ensures that the values never go over 100%. You can simply set a value between 0 and 1 for every vertex weight, and Crocotile will store this value. Whenever the influences are calculated, Crocotile will normalize the sum of the weights. So, you can set the weights to 0.2, 0.3, 0.5, 0.0, and get a similar total influence as described previously. But if the sum is greater than one, for example if you set the weights to 1.0, 1.0, 1.0, 1.0, each weight in this case would equal 25% of the total influence (assuming that each weight corresponds to a unique bone).Setting Weights and Bones
There are a couple ways to set the weights and assign the bones to vertices. The first way is via the Skin section in the Transform panel. The other way is via the Vertex Weight painting tool. However, you must be in Object Edit mode so that the tiles of the Skinned Object are editable.Transform panel
If you look at the image to the right, there are four specific parts marked with the letters A, B, C, and D. Each part is explained in more detail below.- TheShow option controls whether or not the vertex weights get displayed visually when you edit the object and have a bone selected. If you have multiple bones selected, it should display the vertex weights that apply to the last bone that was selected.
- You can set the visual length and thickness of bones here, or in a bone's properties panel. If you set it here, it will apply to any bones that are currently selected. It does not affect their scale values. It may be useful to set these so that the bones fill more space and can be clicked more easily.
- This section allows you to assign bones and weights to any selected vertices. Depending on whether you haveRestrictive mode enabled, it will operate differently. When you select a bone from the dropdown list, it will also select it in the 3d scene ( it will also deselect any other bones that were selected ).
- If theRestrictive mode is enabled, it will only apply weights to selected vertices that have the selected bone assigned. So in this case, if you have Bone4 selected and set a weight of 0.5, it will check any selected vertices to see if this bone is attached to them ( each vertex can be attached to four unique bones ) and it will set the weight that bone has on those vertices.
- IfRestrictive mode is disabled, it will assign the bone and weight to any open index/slot on any of the selected vertices.
- Every vertex of a Skinned Object can be assigned up to four bones that can influence it. This section lists the four weight index/slots that a vertex has. You can use these to manually set the bone and weight that is assigned for each index/slot in a vertex. The bone and weight will be assigned to the corresponding index/slot of any selected vertices when you click on of theSet buttons.
- Additionally, if you have any vertices selected, you can hover the mouse over on the the dropdown lists to get a list of bones that are assigned to the corresponding index/slot for those particular vertices ( note: a bone that is listed might not be assigned to all of the selected vertices, it might only be assigned to some of them ).
- You can also get information about the weights if you hover over the input boxes. If you have any vertices selected, it will show what weight values have been assigned to the corresponding index/slot for those particular vertices, as well as how many vertices have the same weight value.
Weight Painting
You can paint the weights directly to the tiles in the 3d scene instead of selecting the vertices and manually specifying the values for each index/slot. To do this, you must first be editing the object and have theShow option enabled in the Transform panel. You must also have a bone selected. Switch to Draw Mode, and select theVertex Color / Weight tool from the left side of the 3d scene.
This tool will allow you to paint directly to the tiles, thus assigning the bone and weights to their vertices. Simply click and drag, and the color of the tiles will change to indicate the current weights that the vertices have been assigned ( you can customize the colors in the Settings ).The weight value that will be painted to the vertices is based upon the input box in the Transform panel shown in section C of the image above. Changing this value will control the weight that gets assigned as you paint. A lower value will result in less influence the bone has on the vertices, while a higher value will result in a greater influence the bone has. Values range between 0 and 1, and the total influence on a vertex is a combination of all the bones that are assigned.Right-clicking and dragging will erase the weights. This maybe be a useful operation if you want to reset a weight and remove a bone from infuencing vertices.Posing
When you exit Object Edit mode, the Skeleton will become bound to the Skin and posable. You can rotate and move the Bones to pose the Skeleton. The weighted vertices of the Skin will bend and morph with the Skeleton as you pose it. You can restore the base pose by going to the Scene panel and right-clicking the root bone and selectingRestore Pose All. It will return the bone to its original pose as well as any nested bones. You can selectRestore Pose to restore a single bone's pose without restoring any nested bones.To change the base pose, you would need to go into Object Edit mode, and pose the bones while they are unbound from the Skin. While they are unbound, you can make changes to them without influencing the Skin. When you exit Object Edit mode, the new base pose will become set. Then if you chooseRestore Pose All from the Scene panel, it will restore the new base pose.With a skeleton bound to the skin, and the vertices assigned bones and weights, you can begin animating the bones in the Animation panel. Check the Animation section of this documentation for more information on how to animate objects and entities, including bones. Actions that share the same name will be grouped together when exported. So for example, you can have multiple bones each with an Action named "Run", and they will all be exported as one Animation clip. You can have multiple animations exported, but the only file formats that support animations are the .Gltf and .Glb formats. If you have registered and activated your program (non-Steam version), you'll have the ability to save and export.
- ClickFile on the menubar and choose eitherExport Scene orExport Objects. Export Objects will export each object separately whereas Export Scene will combine everything together.
- Select which objects to include in the scene if necessary.
- Adjust the export settings to your liking. Details of these settings are outlined below.
- ClickExport and pick a location to save your files.
- Type in a name for your file and clickSave.
OBJ format
When exporting, you can also export the textures as well as a .mtl file. If you export with the MTL file, then when you import the .obj file into a program that supports mtl files, it will import everything with the appropriate textures assigned. This is because the MTL file helps define the materials that the object uses, along with which textures there should be.By default, Crocotile will export all the tiles (and the tiles of objects that you choose to include), but if you want to limit the tiles that get exported to just those that belong to a single tileset, you can enable the "Limit export to currently selected tileset" option. This will allow you to split up your scene into multiple parts. Then when importing into another program, you can load all of the exported .obj files, apply the correct tileset texture to each one, and position them to the same coordinates. Your scene will look fine, and everything will be together. This option usually isn't recommended though.🐊Watch this video to learn about all the options as well as how to import into Unity, Godot, Blender, Sketchfab. GLTF & GLB formats
You can choose to export your scene and objects as .gltf files or .glb files. Gltf files are human readable json formatted files while the glb files are binary. The binary format has a smaller file size.
Gltf and Glb files can embed the texture images into the file. This way you can have just one file that contains everything you need to import into another program. Because of this, these formats are the preferred way to export.
DAE (Collada) format
In some cases you may want to export as a .dae, which is an XML formatted file. These files will store the file path to any textures that they use. In this case, they will assume they are in the same directory as the .dae file.
C3dp format
If you are exporting objects (not the scene), you can export them as .c3dp files. These are prefab files that are designed for importing into other Crocotile scenes. Use this format if your intention is to transfer Crocotile built objects into other Crocotile scenes.
Export Options
- Merge Vertices
If this option is selected, any vertices that are overlapping will be merged together to create just one vertex. The UVs of the vertices must also be the same for them to be merged as there can only be one UV coordinate per vertex. If the UVs are different, then the vertices won't merge even though they have the same position in 3d space.
- Vertex Colors
You can choose whether or not to include any vertex colors in the exported model. The .obj file format doesn't officially support vertex colors, however some programs accept a modified form where the R,G,B values are written directly after each vertex X,Y,Z position (v X Y Z R G B). This modified format will be used if exporting vertex colors in .obj format.
- Vertex Normals
You can choose between flat or smooth normals. Flat will set all vertex normals to be the same as the face normal. This will give the impression of sharp edges to each polygon. Smooth will average the vertex normals based on all polygon faces connected to that vertex. With Smooth selected you can specify the angle threshold to control which face normals affect the vertex normals. Specify the angle in degrees. If the angle between surfaces are within this angle, the vertex normals will be averaged betweeen them.
- Vertex Color Space
The color space for the Vertex colors can be set to eithersRGB orLinear. This applies only to the.obj and.dae formats. The.gltf/.glb files store them as Linear based on the standard specifications of that file format.
As of v2.5.3, .gltf/.glb formats can specify the color space as well. This is in case an importer chooses not to convert vertex colors from Linear to sRGB. Otherwise, it is recommended keeping it set to Linear.
- Decal Offset
This will offset any decals by the provided amount to avoid z-fighting. Usually this is handled by a shader, but if that is not a option you can bake it into the geometry by providing a value other than 0. Use a small fraction like 0.01.
- Polygon Type
Polygon type only applies to .obj files. You can choose to export your tiles as Triangles or Quads. Triangles are three-sided polygons and Quads are four-sided polygons.
If you have triangular tiles in the scene (tiles that have one of their polygons collapsed), these may mess up your export when Polygon type is set to Quads and Merge Vertices is enabled. There is an option in the context-menu when you right-click the 3d scene that allows you to select all the triangular tiles (if there are any). While in Edit mode, right-click the scene and goto Faces > Select triangular tiles.
- Use Groups
Use Groups only applies to .obj files. This option will organize the tiles of each instance to their corresponding object group. This may effect how your .obj gets imported into other programs. Some programs will separate each group into their own objects upon import. So if you need the tiles split up into their corresponding objects then you will select this, otherwise everything will be treated as a single object.
- Use single mesh
This option does not apply to .obj files. If this option is checked, it will combine everything into one mesh. If it isn't checked, the scene hierarchy will be retained with correct instance parenting as well as animations.
- Unlit
The Unlit option only applies to .gltf and .glb files. If unlit is chosen, it will export the model without any lighting/shading properties.
- Embed Textures
Embed Textures only applies to .gltf and .glb files. This option will embed the texture data with the rest of the data so that there is only one file.
- Export Static Pose
With this option enabled, any skinned objects you export will have their current bone transformations baked into the geometry and any animations will be removed as well. This will result in exporting a static pose of the objects. This option applies automatically to .obj and .dae formats, because they do not export animations. Since .gltf and .glb files can contain animations, you will have to enable this option specifically for them if you want to export a static pose.
- Texture Prefix
Textures that are exported can have a prefix applied to their filenames. You can supply a custom prefix, or have the project's name applied as a prefix.
- Tilesize
When Tile Spacing is set higher than 0, it will use this option to determine the tilesize on the tilesets. You can set this toAuto,Unique orCustom. Auto will automatically try to determine the size of the tiles for each tileset. Unique will use the unique tilesize values that you have set for each tileset. Check theTilesets section of this documentation for details on how to set those. Custom will allow you to provide a specific tilesize for all tilesets.
- Tile Spacing
When exporting, the tile spacing option will add pixels around each tile. So if you choose a value of 2, each tile will have two rows/columns of pixels added on each side, so there would be 4 total pixels rows/columns between every tile. Example: [[Tile]][[Tile]][[Tile]]
This tile spacing implementation only works if you keep all your uvs square with the same dimensions (one tile size per tileset). The wrapping mode of the tileset must also be set to "Clamp to Edge".
- Power of Two
With power of two option enabled, the tilesets will resize the canvas (it will add empty space) up to a power of two dimension if they aren't already. This may be necessary for some engines to render your textures correctly. For instance, if your textures look blurry, it may be due to tilesets not being power of two dimensions. The wrapping mode of the tileset must also be set to "Clamp to Edge" otherwise it won't resize the canvas.
- Limit export to currently selected tileset
With this enabled, only the tiles that belong to the currently selected tileset will be exported.
- Export UV Animations
This will export a text file containing JSON formated data for all the UV animations in your project. It will also bake some corresponding animation data into the UV data of vertices in your model. For more details about this data and how to use it, check the Animated Tiles section of this documentation.
- Export Lights
If you are exporting a scene, this option will decide whether any lights should be included in the scene. For this option to be available,Use single mesh needs to be unchecked.
- Scale
All vertices positions will be multiplied by this value. You can modify this value to magnify/scale the size of your model if you need to.
Texture Names
Each tileset is assigned a name when they are added to your Crocotile scene. By default it will be a number such as 0,1,2,etc.. You can change a tileset's name by going to theTileset Material Settings panel. This can be accessed in the Tileset menu, or by double-clicking the tileset in the tileset list. Check the Tileset section of this documentation if you need to learn more about the Tileset panel.
When tilesets get exported as textures for your models, they will use their tileset name to distinguish them. Each tileset name in a Crocotile scene will be unique to prevent tilesets from overwriting other tilesets when exporting, however if you are exporting multiple scenes it is possible that you may be using the same names in two or more scenes. To prevent exported tilesets being overwritten, you can add a prefix to your textures if you need to via the Texture Prefix option in the Export panel. You can set a custom prefix, or use the project name as the prefix. Another way to avoid overwriting textures is to export to separate folders so that all your files for one scene is located in its own folder.
Export Scene Data
You can export entity data by going to the Scene panel and selectingExport Scene Data from within the Scene dropdown menu.
This will export object and instance data as a json formatted text document. It will also include Light and Camera data if you have any in the scene.{"objects":[ {"name":"Object 1","points":[ {"name":"Origin","pos":{"x":0,"y":0,"z":0}},{"name":"Point","pos":{"x":0,"y":0,"z":0}} ...],"billboard":{"enabled":false,"y":false},"custom":[ {"name":"Name","uuid":"E6205BF6-0FA3-47F7-90BD-7D895DAD9DD1","type":"object","valueType":"number","value":25},{"name":"Name2","uuid":"19E722F6-E597-489A-B766-BA575DB71D63","type":"instance","valueType":"string","value":"hey"} ...],"instances":[ {"name":"Instance 1","uuid":"0D08FF35-7E44-422B-9C62-4F104857209F","parent":null,"pos":{"x":0,"y":0,"z":0},"rot":{"x":0,"y":0,"z":0,"order":"XYZ"},"sca":{"x":0,"y":0,"z":0},"custom":[ {"uuid":"19E722F6-E597-489A-B766-BA575DB71D63","value":"hi"} ...]}, ...]}, ...],"lights":[ {"name":"Point Light","pos":{"x":0,"y":0,"z":0},"rot":{"x":0,"y":0,"z":0,"order":"XYZ"},"sca":{"x":0,"y":0,"z":0},"parent":null,"color":{"r":1,"g":1,"b":1},"intensity":1,"distance":100,"decay":1,"angle":30,"penumbra":0,"target": {"pos":{"x":0,"y":0,"z":0},"rot":{"x":0,"y":0,"z":0,"order":"XYZ"},"dir":{"x":0,"y":0,"z":-1},"parent":null,},"castShadow":true,"shadow": {"bias":-0.001,"mapSize":{"x":512,"y":512},"camera":{"near":0.5,"far":500,"left":-10,"right":10,"top":10,"bottom":-10},"valueType":"number","value":25},}, ...],"cameras":[ {"name":"Camera 123","cameraZoom":1.22773766,"zoom":1,"cameraType":"PerspectiveCamera","parent":null,"perspective": {"pos":{"x":0,"y":0,"z":0},"rot":{"x":0,"y":0,"z":0,"order":"XYZ"},"sca":{"x":0,"y":0,"z":0},"zoom":1,"near":0.01,"far":500,"aspect":1.3132530120481927,"fov":50,},"orthographic": {"pos":{"x":0,"y":0,"z":0},"rot":{"x":0,"y":0,"z":0,"order":"XYZ"},"sca":{"x":0,"y":0,"z":0},"zoom":1,"near":0.01,"far":500,"left":-10,"right":10,"top":10,"bottom":-10,},"target": {"pos":{"x":0,"y":0,"z":0},"rot":{"x":0,"y":0,"z":0,"order":"XYZ"},"dir":{"x":0,"y":0,"z":-1},"parent":null,},}, ...]}
Export Grid Map
Each tile placed inside an Prefab Object can correspond to a grid cell in a grid map. The tile index in the tilemap also gets saved to each grid cell when exported. Grid maps are useful for defining a three-dimensional map of cells. You can decide what these cells represent, but the most common use would be for defining collideable areas.You can export Grid Map data by going to the Scene panel, right-clicking on a listed Prefab Object and selectingExport Grid Map from within theExport Misc section of the context-menu. The Grid Map panel will pop up with inputs for specifying the Cell Size. The Cell Size defines the dimensions of each cell and is measured in Pixels. When exported, it will be converted to Meters.When you click Export, it will cycle through every tile in the Prefab Object and check the position immediately behind/under it. It will determine the location of the cell relative to the Object's origin point and store the x,y,z position as well as the tile index inside an array. The tile index is useful if you want to differentiate your cells; you can have one tile correspond with sloped collision cells for example. Tile indices begin with 0 at the top left corner of a tileset, and will be based on the Tilesize or the Tileset's Unique Tilesize if it is set.Below is an example of some Grid Map data exported as a json formatted text document.{"size":{"x":1,"y":1,"z":1},"cells":[ [2,-1,0,0],[3,-1,0,0],[4,-1,0,0], ...],"dimensions":{"x":10,"y":10,"z":10},"min":{"x":-5,"y":-5,"z":-5},"max":{"x":5,"y":5,"z":5}} 🐊To demonstrate how to work with this data, a Godot project has been created that uses a Grid Map to define the collidable areas of a level. Godot is a free and open-source program for developing games, and it is an excellent engine for importing your Crocotile work into if you are comfortable with more technical processes. You can use the data in other engines, such as Unity, if you like. Watch the video to see how this data can be used in Godot!