Crystal Generator Tool #12: To the Unity Store!

Work In Progress / 10 décembre 2019

After further refinement using Shadergraph, I finally have the crystals looking the way I'd like to them to and have now created promotional imagery using screenshots taken from the engine. The Unity Asset Store asks for an icon image, a card image, a cover image and a social media promotional image; I created these using Photoshop and screenshots from my tool to create images which show the most visually appealing angles of some crystals which have been generated.

When it came to adding information, I made sure that it was from the version I was working on and higher (2019.2.13) and used with HDRP otherwise shadergraph would not work with the materials refraction and visuals. Now, I will just be waiting to see if Unity approves the first build and hope someone may buy the product. 

For the tool, I also recorded a demo of how to use the tool. This video shows the way the designer would use the tool with some explanation of how each element works; I also supplied a .pdf document which is an offline guide of how to use the tool.

Crystal Generator Tool #11: Emission and Bloom

Work In Progress / 09 décembre 2019

Adding further development I have added the emissive elements to the crystals. Being a novice to the HDRP in Unity, I was not aware that Emission had to be supported through PostProcessing Volumes and Bloom elements; after messing around with various values, I discovered that the emissive value needs to be a ridiculously high number to prevent the bloom from blurring the entirety of the scene - to combat this, I added a x10 multiplier within the code so the emissive value the user sees isn't a silly number which I feel helps prevent over-complicating the tool.

After adding this functionality to the demo scene, I figured that I should clear up the Shadergraph nodes and make it look less like spaghetti with structure. I made sure the texture multiply nodes were aligned to see the changes at each stage which lets me see how each node affects the texture and helps me understand my workflow. I still plan to make further changes to the visuals here in terms of transparency and refraction within the crystal, which will be my next step.

Crystal Generator Tool #10: Mesh and Console Variety

Work In Progress / 08 décembre 2019

Following the main functionality finally being integrated, there is now 20 variations of low-poly crystals available when the user first gets the tool - they are also able to drag their own meshes into this folder to add them to the list the tool can pull from.

I also decided to add some colour to the debug menu using Rich Text (<color=yellow></color>) in order to show the user the saving elements inside of the console; I felt that this was important so the user is able to see the file path the prefab/material has been saved to (even though they can customise this).

Next up, I plan to refine the shadergraph material and polish some advanced functionality!

Crystal Generator Tool #9: We Have Saving!

Work In Progress / 08 décembre 2019

After a long few days of trying to figure out why the material wouldn't save the parameters, it turns out that the materials have to be exposed during instantiation for them to actually be seen within the scene. Annoying, but it's done!

Below, you can see a quick run-down of the current workflow, with mesh generation, customisation and saving! It's brilliant finally seeing some form of progress some out of this tool.

Next, I plan to create further meshes  to include for the user as well as adding some polish on the UI, shadergraph and Debug elements.

Crystal Generator Tool #8: Refining and Fixes

Work In Progress / 07 décembre 2019

After a bit of user testing I have discovered that clicking the rename field without typing anything renames the file to ""; this causes an invalid path when it comes to saving the asset so I have implemented a Dialouge window when the asset is renamed in this way which also prevents the save from being executed. Users found this a bit easier to use as it allowed them to not do it accidentally and allowed the workflow to be polished,

I implemented a system for adding the custom material clone to the crystals using List<T> which uses a forloop to add the material to all of the crystals which had been instantiated. Funnily enough, I was not aware that lists are not automatically cleared which led to 208 meshes being stored and Unity to almost crash - after finding this error, I simply added a ClearList function before the objects are instantiated and it now works.

One issue I seem to be facing now is forcing the custom material clone to look the same as the normal one - for some reason the material is resetting to default when it is being cloned and I am unsure why especially when it seems to have the correct parameter clone values when they are exposed. It seems it will be a lot of trial and error to fix this.

Crystal Generator Tool #7: Cloudy Patterns

Work In Progress / 05 décembre 2019

Looking further into Shadergraph I am slowly realising how textures can be created procedurally using Math functions as well as noise patterns available within the editor; by combining these with a texture input I have been able to allow a customisation feature where the crystals look 'cloudy' and a bit more fantasy-like. Adding some animation to the UV co-ordinates has allowed the crystals to look more alive which could potentially be supported by particles and lighting in the future.

Combining these cloudy elements with my randomisation function has allowed for some pretty cool colour combinations to come out of it!

Looking forward in progress, I need to sort out the saving of the materials/prefabs so the user can keep the crystals they use; as well as model further variations of crystals which can look more detailed.

Crystal Generator Tool #6: Visual Updates

Work In Progress / 03 décembre 2019

Having made some basic prefabs for crystals using online reference images, I implemented these into the array which are then taken into the tool for the random choice generation - users are also able to add their own crystals into the /Meshes/ folder which the tool can automatically add to its array. By allowing random rotations and scaling, it allows the crystals to have further variation and this allows the concept of the tool to have a larger unique selling point in comparison to other assets on the Unity store.

Having generated some basic circle code using a tutorial, the crystals are able to replicate a fantasy environment and this also allows them to also look like strategically placed crystals as well as clusters.

Crystal Generator Tool #5: UI

Work In Progress / 03 décembre 2019

After heavy experimentation with the different functionalities the tool could have, I decided to separate out the Mesh Generation from the Customisation tab. This is now shown in a 2x2 grid with the main mesh elements on the top and the customisation on the bottom row.

After working on the mesh generation code, I realised the original concept of creating the crystals through code would not be a good solution to this generation due to finding out the normal code for a Primitive Cube is an extensive amount which I would not be able to implement even with knowing the pseudo code.

Working on a new system, I decided that creating a set amount of meshes that the tool can pull models from would be the best course of action. I added the array to the GUI, as well as new parameters which dictate how many are instantiated, how they are scaled and how they are positioned in a circle relative to one another in order to create a cluster type feel.

Overall, this has become an excellent update of progress and it is definitely motivating to see something finally come out of the tool. Onto the next update!

Crystal Generator Tool #4: Improvements

Work In Progress / 20 novembre 2019

To demonstrate the shader, I modelled a very basic crystal which has around 30-40 polygons maximum. I had to UV these quickly just to make sure I could demonstrate what I wanted to show in terms of progress to my colleagues. Overall, I believe the tool is showing genuine progress, but I am not completely happy with the visuals just yet. I also need to work on the algorithm for the actual mesh generation which could let the user change the size and the amount of crystals present - however I can see the UVs being issues.

The feedback I recieved was as follows:


  • Make a clone of the crystals in the middle and then put the pattern on top of it and it could look better – maybe look into it with shaders
  • Move "randomise all" to the top so a user doesn’t accidentally click it when they customise it loads
  • Whack an alpha parameter into the texture
  • Add colour choice to emissive
  • Edge damage on the crystals
  • Random directions for placement

Good things

  • Visuals are nice
  • Reflections are really good
  • Nice customisation

Bad things

  • Looks “too” solid

After looking at this feedback, it is important to look at prefab variations and overrides as it could greatly improve the customisation and will allow me to implement them into the tool itself. Much of the feedback is also stating movements and adding colour choice to other elements such as emissive, which should be easy to implement when using Shadergraph.

  Current Shadergraph Set-up:

Crystal Generator Tool #3: Adding Texture

Work In Progress / 20 novembre 2019

One of the core components of the crystals I wanted to implement was adding refraction which could be affected by the texture the designer wants to add to their crystals. I added a texture node within Shadergraph which can be readily changed in my UI as well as implementing texture co-ordinates so the texture can move on the horizontal and vertical axis as designated by the user.

I also added the functionality for Shadergraph to create a normal map from the texture supplied to add a bit more realism to the design itself; by doing this, the light can refract using the normals and the crystals can then have a bit of added geometry which doesn't affect the polygon count.

I think it may be worth looking into the feedback I receive shortly and add this to the development of the tool, as I am not quite happy with the position of it yet - is it possible to achieve the crystal I want visually?