Astra Unity 2.6.6
Astra Unity Plugin
|
This guide will walk you through the process of creating content in the tool provided with the SDK. We call this process Authoring
and it is the process of taking raw 3D content such as FBX, OBJ, and PNG textures and making an asset that is compatible with Astra.
In order to create content for Astra you will need a working SDK environment, this is provided for you when signing up for the SDK. When you first launch the authoring tool you will be prompted to create a new application so you will need the following:
App Name
App Id
App Secret
You will also need the raw assets you want to use to create or author your content. You will need to create these assets yourself in tools such as Maya, Max, Blender, Substance, Photoshop, etc.
You will also need the Tafi Creator
windows applciation. If you do not have it please download it via the admin portal or contact jjanz. er@m aketa fi.c om
The following assets can be made by you in the authoring tools right now.
The following assets can only be made by the Tafi team, if you hve a strong need for one of the following please contact jjanz. er@m aketa fi.c om
Over time these asset types will be available to be authored by you in the standalone authoring tool.
Currently Astra only supports up to 4 bones per vertex for skinning solutions.
In addition it's assumed that assets are made using Linear
blend modes. Dual Quaternion is not supported, natively, on either Unity or Unreal, nor internally inside Astra. In Maya you should use Classic Linear
and not Weighted Blend
or Dual Quaternion
.
There are only 3 currently supported files types: FBX, OBJ, and PNG. OBJ files are currently only used for moprhables and cloth and hair must be done with FBX. We do not support any non-PNG texture types as a source asset currently, in the future we may expand the texture types for other formats but we will continue to encourage loss-less formats (as in we do not recommend using JPG).
You should copy the exact rig from the base figure when creating clothing and hair. When weighting you should consider how the weights on the base figure work as well and not independently weigh with no consideration or you may end up with clothing that drifts/tears away form the figure even with the occlusion system.
It is ok to remove bones you do not need such as removing feet bones for a shirt that aren't used, but you must always match the root bones up to the bones you use (as in don't remove hips or things like that).
You should add additional polygons where assets will naturally be adjusted due to the base mesh, this would mean things like increasing the poly count in the stomach, bicep, thigh region and not overly optimizing the asset. Developers have access to decimate the asset to reduce poly count if needed. Avoid reducing poly counts on flat surfaces where one might bend or add moprhs to (stomachs, elbows, wasit, backs, etc). You should have roughly the same density of polygons as the base figure in the same regions for best results, though it is ok to use fewer for less smooth follower meshes (cloth, hair, etc).
When creating assets the projection and relaxing system will yield best results when loose geometry is "threaded" to the main asset. This means that you can weld things like buttons, belt loops, and similar to your main geometry rather then leaving it as separate islands floating next to the main asset. In the future an automatic threader will attempt to glue these pieces together.
While Astra supports a unique and robust projection system for automatically refitting assets as the base body shape changes, this does not yet apply for non base figure assets to other non base figure assets, such as hats to hair, or shirts to pants, or pants to shoes. Instead it relies on careful consideration from the art team to ensure assets generally line up along common fit lines. Such as a hat always sitting the same way on the head regardless of the type of hat. Artists can then create one morphable for each hair so that the hair will deform to fit consistantly via a trigger when a hat is applied. It is up to your art team to decide where things should fit and how best to manage these. These trigger morphables are called Mesh-to-Tag
in Astra.
All textures must be of type PNG
other texture types are not supported. You can use any square texture but we recommend 4096 for source textures where it makes sense. When creating the asset package, called an MR file, the source
asset, in other words the one you are making, will contain the original PNG
textures w/o any lossy or GPU based compression. After uploading the MR file to the server it will be compressed for each GPU texture compression we support along with down scaling to lower resolutions. This is done automatically. This is similar to, but not the same things as, an asset bundle except the server makes them for you and you don't need to worry about it. In addition the application running the Astra SDK can either rely on an auto picked compression type and resolution or it can be overwritten. Please see Astra.Utils.FeatureDetection
class for the appropriate APIs to manage this.
For the 2.5 SDK we support the following texture formats:
with resolutions of:
For the 2.6 SDK we support the following additional texture formats:
and additional resolutions of:
In addition the compression is better optimized such as choosing better formats when the alpha channel is not present. Textures are now mipmaped as well.
Astra currently supports a single unified shader system with the authoring tools. We plan to have support for custom shaders in version 2.8 of Astra. This unified shader supports both legacy, URP, and HDRP and will automatically transition to your render pipeline. This shader is referenced as Astra/StandardColorCustimze
. When authoring content you will not need to work with the shader directly, rather just the texture slots as detailed below. You should receive an example asset for authoring (fbx, textures, etc), if you don't have a copy please contact Tafi for one.
_BaseTexture
- (required) This is a grey scale texture that provides detail without color information. It should be a linear texture with 0.5 as the base value. A value of 0.5 provides 100% color tint transformation whereas values above 0.5 brighten and values below 0.5 darken the texture after color tints are applied._MainTex
- This texture can be used when you want to replace the default color tint handling (complicated multi color designs) or plan to preserve specific areas as-is above the tints. In most cases you will not need to provide this texture._BumpMap
- A standard linear normal map texture (despite the name) a value of 0.5,1,0.5 means the surface points y+ and a value of 0.5, 0.5, 1.0 means it points z+ (towards the camera). It should look mostly blue. Do not make a normal map using object space, this is mapped using tangent space. Unity and most other engines such as Unreal use MKKT tangent space, if your normal mapping tool provides an option for exporting to a specific type of engine chooose either MKKT or Unity (even if not using Unity). Assume +Y is up (positive green)._IdTex
- An optional, but recommended, texture map that provides material mappings for color tints. Areas in red will tint using the first tint color, green for the second, and blue for the third. Alpha is reserved currently so either do not provide alpha or use an alpha of 1.0. Areas that should not be tinted should be black. You can mix all channels to blend and gradient is supported as well with 256 steps currently. When providing material variations for assets this is a very efficient way to let a user customize an asset and is quite popular with users._MetalSmoothAOEmissiveTex
- Sometimes referred to as MSAE
, red channel is metal (1=metal, 0=non), green channel is smoothness (1=smooth, 0=rough), blue channel is AO (1=visible,0=hidden), alpha channel is emission (1=emits the emissive color, 0=no emission)._Color0
- Controls the first tint_Color1
- Controls the second tint_Color2
- Controls the third tint_EmissionColor
- Controls the emissive glow color_OcclusionStrength
- Controls how intense the AO map is (1=use 100% AO (darker), 0=use 0% of AO (brighter))SmoothnessMin
- Clamps the bottom smoothness valueSmoothnessMax
- Clamps the top smoothness valueOutside of the base material lives an alpha injection mask this is a black and white texture that you will paint where you want the skin to be hidden on the base figure behind clothing and hair. This must be painted against the base figure's UV0 channel and not your asset you are making. This is similar to making an ambient occlusion map but is binary (all black and all white, no grey).
Install the included Tafi Creator
and ensure you're using the latest version provide by Tafi as this application is frequently updated.
After launching Tafi Creator
you will be presented with a screen asking you to enter a new environment and a new application.
Using your particular application credentials enter in the information as has been provided to you, if you do not have this info please contact Tafi or log into your web portal and navigate to the App section to get it.
After setting this up click on your app entry on the home screen. You will now be presented with a screen for character or asset selection.
File/Import
- allows you to self install an MR
file without havnig to upload it to the server for processing.File/Exit
- Quits the applicationEdit/Camera
- Change the camera background color and how quickly it moves around when moving the camera. Edit/Textures
- Change the word pattern used to guess what type of texture is (this will auto populate textures into the material slots) Edit/Authoring
- Allows for creating assets on the current SDK version or previous. Currently you should set this to 2.0.0
until otherwise noted. It defaults to Current
and this will not produce an MR that will work on upload to the server. View/Wireframe
- Renders non solid geometry and instead as wireframe which is useful for previewing content Before we begin, you likely want to configure your authoring level to 2.0.0
from the file menu Edit/Authoring
before continuing. At this point you will want to have your assets ready whether they are OBJ, FBX, or PNG files. Each section below will detail the prep and authoring side. The authoring tool does not let you modify geometry, create uvs, rig, weight, texture, etc. These must all be done in modeling tools such as Max, Maya, Blender, Substance, Photoshop, etc.
Clothing and hair provides a way for a customer to customize their avatar easily and efficiently. These assets are automtically refit to whatever shape the user reconfigures their base figure to. They both support the Layering and Eviction
system and the Alpha Injection System
.
Ensure your cloth or hair is rigged, weighted, and has UVs. It must be in an FBX format as well. See the shader texture slots above, you should produce a base texture, normal map, and an MSAE texture at a minimum. We do encourage you to also make an id texture as well for color tinting.
You will also want to create your alpha injection mask this is a texture painted against the base figure that is black and white. Paint areas black that you want the skin hidden and leave areas white where you want the skin to be visible. Again note, the UVs you use to paint should be on the body of the base figure not your asset your making.
SElect a character to author against, currently you should see Arcade Female
or Arcade Male
. Note: assets are dependent and unique amongst these figures, assets produced for Arcade Male
do not work on Arcade Female
currently.
After waiting for the avatar to load you will then be presented with preview.
On the top left corner select New Asset
and select either Clothing
or Hair
based one what you want to create.
You will be presented with a column showing options for clothing. Along with several tabs.
Name
- This should be a descriptive and standardized name for your artists. We avoid dislpaying these names to customers and will likely provide a display name
field in the future along with a way to track localized versions of these. We do not encourage querying off names for customers nor displaying these to customers. A good standard for naming is FIGURELINE_GENDER_REGION_TYPE_NAME
such as Arcade_F_Tops_Shirt_Rainbow
.Model
- Displays the current FBX name of the loaded asset, use the folder icon to pick the FBX file you want to author.Mask
- Optional This is the black and white alpha injection mask, see textures for more info. While optional we highly encourage it's use.Replace
- Optional If you are replacing an existing asset enable this and you'll be presented with a GUID
field of the original asset you want to replace. Do not use this for new assets only to completely replace an existing one already authored.Trigger
- Optional When creating assets such as a hat you can provide a trigger tag that will tell another mesh such as the hair to drive a morph so that they will fit together. This is also commonly done with pants and shoes. This is completely controlled by the artist and the morph must be made by hand presently. To add type a tag then press enter and it will appear the selection below the input box.Tags
- Optional An easy way for you useful tags that can be queried against by developers when finding assets. We highly encourage you to use tags to help organize your content. To add type a tag then press enter and it will appear the selection below the input box.Create
- When you fully done (including materials, regions, etc) use create to finalize your asset and produce an MR file.After selecting your model you should see it load immediately onto your figure without removing existing assets.
If you didn't already remove the asset type you're trying to make it may be occcluding your view. The only option currently is to cancel the creation by clicking the asset on the far left screen, in this case Arcade Tops F Base tshirt v5
accepting the cancel dialogue and then clicking the Remvoe
icon in the preview area. Removing assets without canceling creation will be added soon.
After coming back and reloading the model you should now be better able to see the asset your making.
Do not hit Create
just yet as we're not finished.
After providing a mesh the materials list will be populated with the names of the materials in the FBX, this is typically a single material and we encourage one material per asset in most cases.
Base
- (required) This is a grey scale texture that provides detail without color information. It should be a linear texture with 0.5 as the base value. A value of 0.5 provides 100% color tint transformation whereas values above 0.5 brighten and values below 0.5 darken the texture after color tints are applied.Main
- This texture can be used when you want to replace the default color tint handling (complicated multi color designs) or plan to preserve specific areas as-is above the tints. In most cases you will not need to provide this texture.Normal
- A standard linear normal map texture (despite the name) a value of 0.5,1,0.5 means the surface points y+ and a value of 0.5, 0.5, 1.0 means it points z+ (towards the camera). It should look mostly blue. Do not make a normal map using object space, this is mapped using tangent space. Unity and most other engines such as Unreal use MKKT tangent space, if your normal mapping tool provides an option for exporting to a specific type of engine chooose either MKKT or Unity (even if not using Unity). Assume +Y is up (positive green).Tint
- An optional, but recommended, texture map that provides material mappings for color tints. Areas in red will tint using the first tint color, green for the second, and blue for the third. Alpha is reserved currently so either do not provide alpha or use an alpha of 1.0. Areas that should not be tinted should be black. You can mix all channels to blend and gradient is supported as well with 256 steps currently. When providing material variations for assets this is a very efficient way to let a user customize an asset and is quite popular with users.MSAE
- Sometimes referred to as MSAE
, red channel is metal (1=metal, 0=non), green channel is smoothness (1=smooth, 0=rough), blue channel is AO (1=visible,0=hidden), alpha channel is emission (1=emits the emissive color, 0=no emission).Mask Clip
- Allows fine tuning of the alpha injection mask toelerance, in all cases leave this as is.Occlusion
- How strong is the AO map occlusion intentsity, in most cases leave this at 1.0 unless your AO map is too dark.Smoothness
- Clips the smoothness in your MSAE map, defaults should be left as is.Colors
- Provides a UI for adding color tint palettes, defined below.You can either load textures one at a time, or select a folder and let the textures be auto guessed. We encourage standardizing your textures such as Arcade_Tops_F_Tanktop_Normal.png
or similar. You can control the guessed word in the file menu Edit/Textures
.
After adding your textures you're typically shown a white asset.
To create color palettes first ensure the number next to Colors #
is the number of tint options for the asset, adjust as necessary. Ensure this aligns with your tint mask as loaded onto the material. Press the +
symbol for the number of palette options you want to presnt to the customer in this case we'll choose 3.
In this case our asset has 2 color choices not 3
You can adjust the number by replacing the current number then pressing the enter key. Choose the coiors your want for each swatch in the palette. To preview the palette press the eye
icon next to the palette row. To delete a palette press the trash
icon.
If you allow an emission color you can set the default via the Emission
color option.
Regions allows the Layering and Eviction
system to properly remove old assets that are in conflict with new assets when a customer wants to change assets such as changing a shirt, pants, or hair. There are presets to help you auto pick the appropriate regions such as Top
if you are making a shirt. We encourage the use of these presets but you are not restricted to them. All they do is pick the real regions below such as HEAD
or LEFT UPPER FOREARM
. Choose as many regions as you want or one preset.
Z Bias controls the layer or depth from the skin. Typically leave this as-is. Items close to the figure should be low and items far from the figure (or puffy/thick/etc) should be high. When using a preset a typical z bias is chosen for you. In this case we'll choose Top
as we're making a shirt.
Assets are evicted when both a region and a layer collide also known as an intersection in set theory.
You should typically ignore this tab as it's only suitable for fine tuning adjustments. More options will be migrated from internal tools to the Tafi Creator
over time as they mature. Currently we allow you to swap from projecting against vertex to vertex to vertex to polygon (or face).
Unless explicitly instructed avoid enabling or using options in the advanced tab.
Now that you're done with all your options return to the General
tab and hit Create
. You will be given a dialogue for where you want to save your asset file which we call an MR
file.
Before we upload to the server, let's preview the asset we just made.
Either go back to the character menu and choose the character again and cancel the current asset, or go to the general tab click on the model input and hit delete. This will remove the temporary meshes from the scene.
Use the file menu option File/Import
and navigate to the newly exported MR
file. This will locally install the asset into your database (it is not on the server yet).
Under assets click on Load Asset
.
Choose the appropriate type such as Clothing
and enter part of the name of the asset you just made, then press Search
.
After locating the asset you created click on the row which will load it onto the figure for previewing.
Make any adjustments you need and repeat as necessary before moving to the upload step.
Decals are used to add textured effects onto another mesh; most commonly used agains the base figure for things such as tattoos, makeups, wrinkles, full face costume effects, and scars. Decals support layering and blending allowing artists to create things such as makeup kits for their users.
You should already have your textures ready when authoring. A base or main texture is the only required one, but including a tint mask is useful to expand the capabilities of your decal (letting customers customize the color choices of the decal). It is rare to include normal maps or MSAE, normal maps are typically done for things like scars, and wrinkles. MSAE maps are typically done for things like applying non-uniform smoothness to the decal (such as with full face makeups). If you can use uniform smoothness such as a with a lipstick decal the performance impact of the decal processing will be improved over using an entire texture map.
Name
- Start by providing a name for your decal, we encourage you to use human readable and standardized names. These names should not be shown to the customer and instead should only be referenced by developers and artists. A good naming scheme is: A good standard for naming is FIGURELINE_GENDER_DECAL_TYPE_NAME
such as Arcade_F_Decal_Makeup_Lipstick_Default
.Mesh
- Next pick the mesh you want to use as a target for your decal. In nearly all cases it will be the body mesh of the base figure. This is done by selecting the search icon next to Mesh
input and then picking from the dropdown. This will auto fill out the appropriate guid for you. If you already know the guid you can copy/paste that in instead.Layer
- Layers allow decals to be stacked. Low values will be below high values. For example a foundation would typically sit at the 0.0 layer and a lipstick might sit at 10.0. These values are handled by your art team so you should design your own layer stacks accordingly.Strength
- Strength is typically kept at 1.0 a lower value will reduce the initial opacity of the decal, this is commonly controlled by a customer.Material Blending
- Material blending dictates how the color data from the main and base textures should be blended into the target mesh. Currently we only support Normal
, Inherit
, and Replace
but the other states will be used in the future. See blend modes for descriptions, but Normal
is how programs like Photoshop perform blending and Replace
will replace the original target mesh texture set (typically reserved for full body morphs like the Alien or Zombie). Inherit
means use the default blend mode.Normal Blending
- This works the same as Material Blending
but reserved for the normal maps.Tint Mode
- Used to control how color tints should work on the decal.Normal
- Customers and artists dictate color tints and are chosen as needed.Mesh
- The base target mesh's color tints are used to drive the same color tints on the decal (commonly done for full body morphs)Disabled
- No color tinting is allowedTags
- Works the same as other tags, enter a value and press enter to add and use the trash
icon to remove. These are self-managed by the artists and are useful for grouping and querying in the future.Do not hit Create
just yet, instead navigate to the Materials
tab after this panel is complete.
On this panel you will need to select the submesh/material you want to target, you may choose more then one if needed especially if your decal overlaps multiple submeshes. After picking the submesh the texture and matieral section works the same as clothing and hair for controlling materails, please refer to that section for a guide on textures and usage.
After configuring your textures you should be able to see your previewed decal in the preview area.
Return to the General
tab and then hit Create
, this will produce an MR file. You will be given a prompt for where to save this file.
If you wish to preview the final MR file you can follow the clothing and hair section for previewing except choose Decal
on the search type.
Morphables allow you to alter the overall shape of the base figure. This could be as simple as nose adjustments, giving your figure elf ears, or more complicated things like making them into a child or alien. There are three sub features of a morphable but only the mesh targets are currently supported in the Tafi Creator
currently. Mesh targets are similar to blendshapes, shape keys, or morph targets from other systems.
In addition morphables are split into 3 categories: Normal
, Trigger
, and Corrective
. Where normal alllows shaping options. Trigger is used for Mesh-to-Mesh
effects like tucking pants into boots, and Corrective
replaces the procedurally generated refits of a sub asset (like a shirt) over the target morphable against the source mesh (typically the base figure).
Mesh-to-Mesh
morphables are handled entirely by your art team and are up to you to self manage those region boundaries. Making too many will become unwieldly and put a large burden of effort on your team. It's better to have good region fit lines to avoid the issue entirely but it isn't always possible to do this.
One should avoid authoring corrective morphables unless you are unhappy with the results of the procedural system.
When making a morphable you must first know the target mesh you want to make it against. In most cases this will be the base figure. Care must be taken to not alter the UVs in any way or a correlation path will be lost. Currently the authoring tool only supports correlation against UVs but internal tools support vertex order and using a tertiary correlator object. These other correlation options will eventually be ported into the authoring tool in the future.
You can now push and pull vertices to fit the final adjusted shape you want using any tool that will preserver your correlation data (typically UVs). Once you are happy with the result export an OBJ file and launch the Tafi Creator. Note currently the authoring tool does not support loading in FBX for morphables at the moment.
Preview
- If you want to see the version of the morphable you're creating (defaults to enabled)Name
- The name of your morphable, this like other names should contain no spaces or special characters and should follow consistent guidelines for asset naming. Avoid using the name itself for keywords to query against and instead rely on tags.Type
- Split into three options, in most cases Normal
is the one you want.Normal
- A regualr morphable such as adjusting the ear, nose, face, or body.Trigger
- A Mesh-to-Mesh
morphable used to adjust things like pants tucked into shoes, this would be a morph applied to the pants.Corretive
- If you're not happy with the procedural projection result you can override it's computed value with your own. This would be something like fixing the way a shirt is adjusted to fit a body shape. This is typically only needed for some types of assets like sun glasses.Mesh
- Which asset guid this morphable targets, in most cases it will be the body mesh, use the icon to the right to get a dropdown list from your scene and pick the body in most cases.OBJ
- The morphable adjusted shape you made in most cases this will be an OBJ model of the base figure with it's adjustment such as making the biceps larger.Reoplace
- Only enable this if you're replacing the same asset already authored and then you can use the GUID
of the original morphable.Tags
- Works the same as other tags, enter a value and press enter to add and use the trash
icon to remove. These are self-managed by the artists and are useful for grouping and querying in the future.Start by loading the character you want to make the morphable for such as the Arcade Female
. Fill in the name, then select the body mesh by clicking the magnifying glass and choose the body mesh of the figure. Then choose the OBJ file by clicking the file open icon and navigate to your OBJ file you made. Provide any tags you want, then hit Create
and preview your asset. Once done follow the uploading guide below.
In this section you can adjust the obj scale. In most cases a value of 0.01 will work best (scale from centimeters to meters).
In order to author a corrective morphable you will need to have the following:
Once you have your preconditions setup you can now author the corrective morph
Select the figure you're going to be correcting against under the CHaracters dropdown in the top left
Load the morphable you want to correct onto the figure by choosing Load Asset
and filtering/searching for the asset you want, ensure Type
is Morph
then loading it onto the figure in the search results by selecting the desired morphable.
Choose New Asset - Morph
Ensure Type
is set to Corrective
and then choose the moprhable you just loaded from the provided list, you can also enter the GUID
directly if you don't see it in the list.
Mesh
click the search icon and choose the mesh this corrective will be applied to, it should be a follower mesh such as an eye, hair, cloth, etc and not the base skin.Choose the OBJ file by clickign on the file open icon next ot the OBJ
option. At this point you should see a preview that you can verify your corrective is working accurately.
Finally hit Create
, wait for completion, and then upload your MR file to the admin portal.
After creating your MR
files you can now upload them to the server. You will need to know the admin portal URL and you must have a user account that has access to upload and manage assets.
Login to your admin portal and navigate to the Assets
page.
Click on Create Asset
and upload your MR file by clicking on the Upload
button.
After waiting for the asset to upload you will be presented with a preview screen or a failure screen. Press the Add
button to add the asset to your online asset database.
At this point you can navigate to your asset and grab the GUID
if you want you can load an asset using the SDK by directly loading it via the GUID
even if it's not in your asset categories. In order for assets to be discoverable in via APIs in the SDK they must be added to an asset category.
Currently thumbnails are handled purely on the admin portal. Locate your asset record and press the pencil edit icon to edit the asset. Hover your mouse over the auto-generated thumbnail (text) which is located in the top left corner of the edit page and click on it. This will bring up a dialogue box to choose an asset thumbnail image file. You may choose JPG or PNG, but we recommend using a PNG file.
These thumbnails are queryable in the SDK using the Catalog API in C# or asset_search calls via C.
In order for assets to appear in search results in the SDK the asset must be in a category that is in the application being queried against. Start by navigating to the Asset portal and locate your asset.
In the bottom right corner of the table row click on add to a category +
.
Choose an appropriate category for your asset and press ok
. This will then bind the asset to the category in the application. If there is no sutiable category you should make one via the category home.
Last step, and this is temporary and will be resolved soon, click on Cache Resets
then click on the App Closet Cache
run button. This will clear out any caches allowing the asset to be searched via the SDK.