Search Unity

Easy Decal - Decals everywhere

Discussion in 'Assets and Asset Store' started by Sycoforge, Oct 28, 2014.

  1. Sycoforge

    Sycoforge

    Joined:
    Oct 6, 2013
    Posts:
    751
    Easy Decal: The ultimate decal solution for your project.
    Join our Discord to help shape the future of Easy Decal! :)

    easy_decal_manor_twitter.png

    easy_decal_tunnel_twitter.png

    Key Features

    • Full Editor integration
    • Easy to use
    • Custom materials and shaders
    • Variable quality levels
    • Contains ready-to-use prefabs
    • Projection in 3D space (translation, rotation, scale)
    • Dynamic geometry
    • Optimized performance

    Screenshots
    ed_screens_compare.jpg
    ed_screens_details.jpg
    ed_screens_splatters.jpg



    Tech Demo 2016 (1.6.0)



    Showreel 2016



    Get it on the Asset Store.
     
    Last edited: Nov 4, 2020
  2. moondust-games

    moondust-games

    Joined:
    Jul 21, 2013
    Posts:
    24
    Hi I'm getting a build error, building for iOS. Can you please help?

    Internal compiler error. See the console log for more information. output was:
    Unhandled Exception: Mono.CSharp.InternalErrorException: Assets/Easy Decal/Scripts/DynamicDemo.cs(8,14): DynamicDemo ---> Mono.CSharp.InternalErrorException: Assets/Easy Decal/Scripts/DynamicDemo.cs(11,22): DynamicDemo.DecalPrefab_A ---> System.IO.FileNotFoundException: Could not load file or assembly 'UnityEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies.
     
  3. moondust-games

    moondust-games

    Joined:
    Jul 21, 2013
    Posts:
    24
    If I put all the scripts inside an Editor folder it builds but the script breaks obviously.

    It appears you have some reference to Unity.Editor in ch.sycoforge.Decal which is not allowed. I can;t fix that from here. Hope you can look and sort asap.

    Thanks :) Otherwise great plugin so far!!
     
  4. Sycoforge

    Sycoforge

    Joined:
    Oct 6, 2013
    Posts:
    751
    This behaviour happens sometimes, on some platforms. It's an issue with the precompiler directive UNITY_EDITOR. We have fixed this in version 1.4 comming out soon. You can write an e-mail the support to get an instant workaround for that problem.
     
  5. the_motionblur

    the_motionblur

    Joined:
    Mar 4, 2008
    Posts:
    1,774
    Why is your video telling me to get out of here? I was going to watch it! :(

    Seriously, though: This looks pretty nice. I'll keep an eye on it in case I need a decal system in the future. :)
     
  6. Sycoforge

    Sycoforge

    Joined:
    Oct 6, 2013
    Posts:
    751
    Thanks motionblur. The tech demo shows the key features of version 1.2. But since then a lot a functionalities has been added and/or improved. We will soon publish a new tech demo showing features of the comming version 1.4. In this video you maybe don't have to get out ...;)
     
  7. Alf203

    Alf203

    Joined:
    Dec 7, 2012
    Posts:
    461
    Hello,


    This looks really nice. Good job!


    I'm considering buying it and looked at the manual but I have some questions.


    I would like to use this for bomb explosion decals so when the bomb explodes it leaves a decal for a few seconds and then fades it. I need to use the dynamic one (the one that takes a similar shape as the mesh it will be on).


    I have my own pooling system so I would create a 3 or 4 at runtime - and then, reuse them and not create new ones.


    My questions are :


    -If I leave the decal in the scene somewhere but not visible with the camera is there still cpu calculations - so, are they still calculating to fit the mesh's shape when out of frustum ?


    -I need the decal to be dynamic for only a second (When it will position it as the bomb explodes). After that, since it is dynamic, will it still keep doing calculations to fit the mesh's shape ? Is there manual control over when the mesh updates ? It could be a good optimization feature if its not there. If its not there already, I'm also thinking this feature would be good for mobile for using the decal as a nice blob shadow over a bumpy ground. Depending on how bumpy the ground is, it might not need to update every frame.
     
  8. Sycoforge

    Sycoforge

    Joined:
    Oct 6, 2013
    Posts:
    751
    Hi,

    In version 1.3.x when a decal is not Baked the Dynamic Geometry System will update the decal, even if it's out of sight of the camera, but this will change in a early 1.4.x version.

    But for now you can make a little workaround to achieve the same functionalities (Code example at the end):

    Bake the decal geometry after some time
    1. Extend the EasyDecal class
    2. Override the Start method
    3. Invoke a method that bakes the decal geometry
    Bake when the decal is out of sight
    1. Extend the EasyDecal class
    2. Create a OnBecameVisible method and free the geometry by setting Baked to false
    3. Create a OnBecameInvisible method and bake the geometry by setting Baked to true
    In one of the later releases of the 1.4.x cycle, there will be an auto-update feature which will only process geometry when explicitly needed. This way you can have multiple dynamic instances even on weaker mobile devices.

    Code Example

    Code (CSharp):
    1.     public class EasyDecalExtension : EasyDecal
    2.     {
    3.         protected override void Start()
    4.         {
    5.             base.Start();
    6.  
    7.             // Bake the decal after 1 second
    8.             Invoke("OnBecameInvisible", 1f);
    9.         }
    10.  
    11.         // Free bake when the decal became visible.
    12.         void OnBecameVisible()
    13.         {
    14.             Baked = false;
    15.         }
    16.  
    17.         // Bake when the decal became invisible.
    18.         void OnBecameInvisible()
    19.         {
    20.             Baked = true;
    21.         }
    22.     }
     
  9. Alf203

    Alf203

    Joined:
    Dec 7, 2012
    Posts:
    461
    Thanks for the quick reply and example. The roadmap sounds great. Will definitely get this soon.
     
  10. Alf203

    Alf203

    Joined:
    Dec 7, 2012
    Posts:
    461
    Hi, I was wondering how is the update coming along ?
     
  11. Sycoforge

    Sycoforge

    Joined:
    Oct 6, 2013
    Posts:
    751
    The 1.4.x cycle will be released by the end this month. Unfortunately we could not release it in January as planned.
    We decided to give the the Box Projection mode more priority and moved it from the 1.5.x cycle to 1.4.x that causes the delay. There will be also some structural changes wihin the framework.

    As soon as the new version is ready to get published, some users of the 1.3.x version can get early access by sending the Invoice No. to our support: http://nu.sycoforge.com/support/contact this way you don't have to wait until it's reviewed by Unity.
     
  12. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,340
    Are the decals flat or supports non flat surfaces too ?

    Also is there an edge check ? For example a bullet decal on the edge of a crate, how is that handled ? Will it be moved towards the center of the object for example or appear half way in the air ?

    Thanks

    EDIT: Just saw the video, so question #1 has been answered, looks very cool :)
     
  13. Sycoforge

    Sycoforge

    Joined:
    Oct 6, 2013
    Posts:
    751
    Currently (1.3.x) you can project along the surface normal the overlapping parts get faded out when you use the 'Alpha Edge Bleed' shader.



    In the upcomming 1.4.x cycle you will have a lot more possibilities to control and constraint the geometry projection.
     
  14. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,340
    Great, thanks.
     
  15. ZJP

    ZJP

    Joined:
    Jan 22, 2010
    Posts:
    2,649
    Wow. Seem really good. Works in game (runtime)? Instant buy if yes.
     
    Sycoforge likes this.
  16. Sycoforge

    Sycoforge

    Joined:
    Oct 6, 2013
    Posts:
    751
    Yes. The decal system has a fast growing API.

    e.g.:
    Code (CSharp):
    1. EasyDecal.ProjectAt ( GameObject decalPrefab, GameObject receiver, Vector3 position, Quaternion rotation)
    to project a decal to an other game object (like a wall).

    You can find a bullet hole example on our snippet section.
     
  17. ZJP

    ZJP

    Joined:
    Jan 22, 2010
    Posts:
    2,649
    Great. Thanks for the reply. Purchase made. :cool:
     
    Sycoforge likes this.
  18. Sycoforge

    Sycoforge

    Joined:
    Oct 6, 2013
    Posts:
    751
    Another thing needs to be mentoined:

    The Easy Decal framework is actively under development and gets more powerful with every new released version. Therefore small pricing adaptions have to be made every release, but everybody who bought it once has all further updates for free. :)
     
  19. Sycoforge

    Sycoforge

    Joined:
    Oct 6, 2013
    Posts:
    751
    Here's little sneak peek of the upcomming version ('Cube Reflection Splatter Shader'):

    ~50 Splatters shot to a sphere at runtime
    screenshot_1_4.jpg
     
  20. Alf203

    Alf203

    Joined:
    Dec 7, 2012
    Posts:
    461
    Thanks for the info on the update! I'm really excited for this.
     
  21. Django

    Django

    Joined:
    Nov 25, 2008
    Posts:
    120
    Hi,

    I stumbled on this today and bought it since it looks so cool. It works great but then I realized its a DLL and so no source is provided...

    I usually don't buy assets that don't provide the source because if the developer vanishes then you're stuck, and also you can't extend the asset yourself if you need to.

    Anyways, I know its my own fault for not looking carefully in the file list but please specify that the source is not included in the asset store page and in the forum page.

    Thanks.
     
  22. Sycoforge

    Sycoforge

    Joined:
    Oct 6, 2013
    Posts:
    751
    Initially (1.0.0) we have included the source, but due the fact that the framework is actively in development you have no advantage of this because your work will be lost every time we update the plugin. Unless you want to begin a new branch every time a new updates hits the asset store, it's economically a bad idea to do so.

    The next point is that we can not give any support to the source code in the basic version because the huge amount time it consumes (no development during this :confused:), but there will be Pro/Ultimate version somewhere in the future with all source and needed documents included (class diagrams, seq. diagrams, dependency diagrams, etc.) and some special functionalities

    @Django We really understand your point of view as a developer but for the case we were facing bankruptcy we will release a final version in the asset store with all things included you need to successfully branch the framework. It is not in our sense to let our work getting lost in case of business failure.

    I hope you understand our point of view! Thanks.
     
    Last edited: Feb 10, 2015
  23. Django

    Django

    Joined:
    Nov 25, 2008
    Posts:
    120
    Thank you for your reply !

    I understand your point of view and its reassuring to know that you will not let the work get lost in case something happens.

    Its easy to see a lot of work is being done on this product and that your support is excellent !
     
  24. Alf203

    Alf203

    Joined:
    Dec 7, 2012
    Posts:
    461
    Hello,

    I've been playing with this asset for a little and while in general its great, it seems to not work well with prefabs ?

    The thing is that I'm having lots of null reference while using prefabs of the decal... Maybe the decal prefab I use is already baked that is why ? But then what happens is that the decal prefab is sometimes not shown at all if I drag the prefab in my scene (its like nothing is there and I get the null ref error whenever I click anywhere)...As a side effect of this, the UI seems to react weirdly and everything just disappears except for the bake button...

    Also the Procedural plane used for the decal leaks memory in the editor (not sure in the game if that is the case but in the editor I do get messages about that). Maybe that has to do with the error above ?

    I'll work on another part of my game and meanwhile hopefully you can pintpoint these issues and address them...

    Thanks for any help !
    Alf
     
  25. Sycoforge

    Sycoforge

    Joined:
    Oct 6, 2013
    Posts:
    751
    Have you made your own prefabs or does this behaviour occure with all prefab even with those we included?

    We will try to reproduce this and look at that behaviour as soon as possible.
     
    Last edited: Feb 14, 2015
  26. Alf203

    Alf203

    Joined:
    Dec 7, 2012
    Posts:
    461
    Hi, thanks for the quick reply.

    I don't know if this helps but I am using my own prefabs and not the ones provided. The prefabs consist of just a gameobject with the easy decal script so its not part of a hierarchy or anything... If I manage to find an easy way to replicate the issue, I will let you know, but so far I have no idea what triggers it...

    Also maybe this helps but in scene view, I noticed that the bug maybe related to the fact that one copy of my prefab had "Proc_Plane" as a child but then another exact copy of the same exact didn't (or maybe it couldn't find its Proc_plane, hence the null ref error)

    Hope this is helpful !
    Alf
     
    Last edited: Feb 15, 2015
  27. WonkyDonky

    WonkyDonky

    Joined:
    Aug 24, 2014
    Posts:
    65
    This looks perfect for what i been looking for! Especially the upcoming 1.04 features! Any news when its coming? So i can look in to buying this! :D
     
  28. Sycoforge

    Sycoforge

    Joined:
    Oct 6, 2013
    Posts:
    751
    @Wonka45 Unfortunately the release gets delayed because of some Unity 5 stuff.
    Initially it should have been released on the 1st March :eek:.
     
  29. Alf203

    Alf203

    Joined:
    Dec 7, 2012
    Posts:
    461
    I know you guys probably have been busy with Unity 5 and you have other assets too but.. I've worked on other parts of my game for a month now while waiting for a fix, and no words on it yet. I'd really like to I use easy decals...

    Were you able to find the errors ?

    I can't help but feel disappointed, not only because I can't use it and I payed for it, but because I could have found the line of the error and fixed it myself a month ago if only source was included- and even shared where the problem spot was with you to help improve the product and save us both time. Sometimes asset makers don't realize that our success as game developers (and users of your assets) also means your success as an asset seller...

    I guess my disappointment is somewhat mitigated by the fact that Unity is just a hobby for me, but still, if there is no source, then I'm hoping for some top notch support like you advertise...especially since this is not a feature request but its something that prevents the user from using the product.

    Some of the decals creates the null reference errors when you bake and unbake, duplicate and move them around. I don't know the exact steps but eventually I get the error. Truth is, I'd rather spend time on making my game than hunting down how to replicate it. Anyway, the result is that some of the decals reset and the work gets lost ! Its really unusable for me as its just too easy to lose your work... Maybe others use it in another way and don't get the error somehow ?

    Regardless, I would really like to be able to use Easy Decals. Its nice that there are very cool upcoming features but would it be possible to please prioritize fixing this issue so I can finally make use of it ?

    Thank you,
    Alf
     
  30. Sycoforge

    Sycoforge

    Joined:
    Oct 6, 2013
    Posts:
    751
    Dear @Alf203 and every other waiting customer,

    We are very sorry for the delay of the Easy Decal update and the resulting inconveniences. Indeed there was a lot of work updating and porting our assets to Unity 5.

    The 1.4.0 version will be submitted by the end of this week to the Unity Assets Store.

    Thank you for your patience.
     
  31. ZJP

    ZJP

    Joined:
    Jan 22, 2010
    Posts:
    2,649
    This...
     
  32. Sycoforge

    Sycoforge

    Joined:
    Oct 6, 2013
    Posts:
    751
    Provide sources - Yes or No?

    Well, we discussed a lot about the question whether to ship Easy Decal with or without the source code.
    From the perspective of the customer this question seems to be an easy one:

    "Owing the source is positive. What else?"

    But let me explain why we finally decided to stop providing the plain source:

    Owning the full source code is indeed a good thing, but only if the framework is not actively maintained. Imagine this case:
    • You encounter a bug or a missing feature.
    • You spent hours fixing/implementing it
    • A week or two later the developer releases an update including those features/bug fixes
    • Now you have two options:
      1. Keep your branch and do all the future work with your new version
      2. You switch to the new version of the developer and loose your whole work :confused:
    Another thing I want to point out is, that we really want to offer a good support. Shipping the asset with the full source code included means that we also must provide a satisfying support to the complete source code and this is nearly impossible (+1.5K compiled lines and growing).

    I mean we really understand the customers perspective, as we are a small indie studio too and also buy assets from time to time. But unless you don't want to branch/fork the framework or roll your own, it's generally not much of an advantage.

    Last but not least: In case that we would face bankruptcy, our business would fail somehow or we definetely would stop further development of an asset, we will release a final version with all sources and stuff included. It is not in our interest that our work gets lost.

    I hope you can understand our point of view.
     
    Last edited: Mar 18, 2015
  33. ZJP

    ZJP

    Joined:
    Jan 22, 2010
    Posts:
    2,649
    Yes. You're right. So, long live. ;)
     
  34. Alf203

    Alf203

    Joined:
    Dec 7, 2012
    Posts:
    461
    Well, thank you for sharing your view on that.

    Anyways, thanks for getting back to me. I'm hoping the bug will be fixed in the new update otherwise you'll probably hear more complaints from me...or not :p !
     
    Last edited: Mar 25, 2015
  35. Ramsdal

    Ramsdal

    Joined:
    Oct 18, 2013
    Posts:
    251
    Is this asset under development, I can see it has been a while since the last update :) Also when doing projection decals on uneven surfaces I guess it will make a mesh on top of that surface right? If so, can you say something about how many verts/tris it will take up. I would use it for mobile platform, and have tried others where I found the verts/tris of the generated mesh to be quite high. Can this be regulated in some way (can you post a screenshot with an example mesh generated and the counts)? :)

    The asset looks very nice I must say!
     
  36. Sycoforge

    Sycoforge

    Joined:
    Oct 6, 2013
    Posts:
    751
    Yes it's under development. Today we will submit version 1.4.0 to the Asset Store for review.

    In the new version you will basically have to different projection techniques to choose from:

    Plane Projection (already included now)
    With this technique you can regulate the amount of vertices created by a quality slider. The higher the quality the better the generated mesh will fit the underlying geometry.
    The formula to calculate the vertices of the generated mesh is: (2^Q + 1)^2 where Q is the quality you have set.
    So a quality of 0 means: 4 vertices and 2 triangles are generated. It highly depends on the "bumpiness" of the geometry of the decal receiver what quality level (mesh resolution) you will need to achieve good looking results. You can also cheat by ofsetting the generated mesh with the distance property. This way can sometimes use a lower quality.

    easy_decal_q2.jpg

    easy_decal_q3.jpg

    Box Projection (new in 1.4.0)
    With this technique you can not choose a quality, but the generated mesh will always fit the complete geometry of the decal receiver. So the vertices generated is equal to the underlying geometry wrapped by the bounding box (OBB) of the projector.

    I hope that helps. :)
     
  37. Alf203

    Alf203

    Joined:
    Dec 7, 2012
    Posts:
    461
    I'm posting to say that the authors went out of their way to make things right regarding a bug I had. They care and its obvious they are putting a lot of effort and work in their assets !
     
    Sycoforge likes this.
  38. cakeslice

    cakeslice

    Joined:
    Oct 18, 2014
    Posts:
    197
    Does 1.4.0 have Unity 5 compatibility? if so can you PM that version if I buy it?
     
  39. Johnnemann

    Johnnemann

    Joined:
    Mar 20, 2012
    Posts:
    11
    If you have a merge tool of any variety you can usually pretty easily integrate source code changes. And it's not just for the source not being maintained - if I want to extend your system for my particular needs, I need the source code to do that. Owning source makes extensions much more valuable for me as a developer.

    I came by this thread because I was thinking of buying it and was curious when Unity 5 support would be available. I'm glad I learned it doesn't have source provided, though! Another thing to weigh in my decision.
     
  40. Sycoforge

    Sycoforge

    Joined:
    Oct 6, 2013
    Posts:
    751
    We are currently working on the Unity 5 port. We have rewritten the system core for better performance and extensibility which took longer than planned... :eek:
     
    ZJP likes this.
  41. FG_dev1

    FG_dev1

    Joined:
    Nov 3, 2014
    Posts:
    44
    Hi

    Is it currently possible to create decals at runtime using a projection box?

    I want blood that wraps around objects at runtime but the bullet hole pic you have above seems to only be in the initial surface the "bullet" hits. Is it possible for them to wrap around both edges of the box if created at runtime?

    Thanks
     
  42. Sycoforge

    Sycoforge

    Joined:
    Oct 6, 2013
    Posts:
    751
    The newest version is currently not available in the Asset Store, but Box Projection is part of the 1.4.x version.
    In this version box projections are possible at runtime.

    The quality of the splatter/damage/bullet hole depends on how you are calculating the bounds/orientation of the decal instance.

    Per example you can specifiy the orientation of the decal by specifying the normal direction of the receiver's surface:

    Code (CSharp):
    1. ProjectAt(GameObject decalPrefab, GameObject receiver, Vector3 position, Vector3 normal, float rotation)
    Intuitively you would take the normal of the first RayHit, which is okay, but this way you have - as you said - an one-surfacer.

    But if you have more than one hit detected, you could also average the hit normals and project with the average normal. This method works for concave surfaces.

    concave_edge.jpg

    For convex surfaces this works not that good, meaning you can get (slight to strong) distortions.

    convex_edge.jpg

    As soon as we have finished porting our assets, we will upload more advanced runtime examples under our Snippets Section. So stay tuned. :)
     
    Last edited: Apr 10, 2015
  43. xaeroxx

    xaeroxx

    Joined:
    Dec 2, 2012
    Posts:
    17
    Hi, I'm trying to add decals (vinyl) to my car model, which is a single mesh. I want the decal is drawn only to the body (painted) part but not to the glass parts. How can I prevent it to be drawn on glass? Glass parts are not separate meshes but have different material ids.
     
  44. Sycoforge

    Sycoforge

    Joined:
    Oct 6, 2013
    Posts:
    751
    Currently it is only possible to mask with layers. Masking by objects is under development, but masking by material id? We will have a good look at this. But I can not promise to find an elegant way to perform this task.
    Maybe with manual vertex masking? :rolleyes:
    I will come back to you as soon as we got an appropriate solution for that! :)
     
  45. dzkdes

    dzkdes

    Joined:
    Apr 18, 2015
    Posts:
    18
    Hi,

    I have a serious problem. Although the decals works fine on default unity objects such as planes, spheres, cubes etc. I can't get it work on my custom meshes. I have tried both surface normal and projection normal. Is there something I'm missing?

    Edit: Ok, found it. It seems like we need a mesh collider on the object. Is it ok to remove the collider once we bake the decal? Also is it okay to remove the EasyDecal component from the baked decal? Where is the baked mesh stored? I can't see a mesh filter on the resulting object. I want my decal to be totally independent of EasyDecal once it's baked. Is it possible? Thanks.
     
    Last edited: Apr 20, 2015
  46. Sycoforge

    Sycoforge

    Joined:
    Oct 6, 2013
    Posts:
    751
    In the current version available in the Asset Store (1.3.6) it is not possible to remove it.
    In 1.4.x you will have the following options:
    1. Create a mesh clone by pressing Alt+C
    2. Create an regular asset out of the Easy Decal instance (see image)
    screenshot_1_4_interface.jpg
     
  47. dzkdes

    dzkdes

    Joined:
    Apr 18, 2015
    Posts:
    18
    Thank you so much! That's exactly what I needed.

    Btw, I want to make a feature request for 1.4.x. Can you please add a symmetry option for the decals? I mean, let's say we have a 3d object like a box or a car. I wish a copy of the decal of one side be also exist on the opposite side. That way, we can have one draw call for such symmetric decals. (Like the vinyls of cars both doors)
     
  48. hippocoder

    hippocoder

    Digital Ape

    Joined:
    Apr 11, 2010
    Posts:
    29,723
    Ah no source? so your DLL is sure to work on PS4 and consoles, yes?
     
  49. Sycoforge

    Sycoforge

    Joined:
    Oct 6, 2013
    Posts:
    751
    You are welcome! We have added your feature request to the road map. ;)
     
  50. Rico21745

    Rico21745

    Joined:
    Apr 25, 2012
    Posts:
    409
    Does this work on Skinned Meshes and/or moving objects by any chance?