Search Unity

  1. Welcome to the Unity Forums! Please take the time to read our Code of Conduct to familiarize yourself with the forum rules and how to post constructively.
  2. We have updated the language to the Editor Terms based on feedback from our employees and community. Learn more.
    Dismiss Notice
  3. Join us on November 16th, 2023, between 1 pm and 9 pm CET for Ask the Experts Online on Discord and on Unity Discussions.
    Dismiss Notice

QuickDecals 2 - Easily Add Unique Detail and Interest to Your Scene (MAJOR update!)

Discussion in 'Assets and Asset Store' started by yahodahan, May 13, 2014.

  1. yahodahan

    yahodahan

    Joined:
    Apr 26, 2009
    Posts:
    1,379
    Let me start with an apology- the original QuickDecals was bland, limited, ugly, and rather terrible. This new "2.0" version changes all that! We are very, very excited to finally release this completely rebuilt tool, thank you for looking!

    QuickDecals 2: Bring Your Scene to Life with Unique Interesting Detail!
    Purchase | Website | Video | NEW: ProCore Bundle

    [video=youtube_share;tielCFE6mg4]http://youtu.be/tielCFE6mg4

    Nothing in real life stays clean or perfect- not for long, anyway! "Decals" are a great way to add visual detail, breakup tiling textures, and tell a story in your scene, with very little performance cost. Examples include:

    Drips, dirt, and grunge
    Blood splats
    Wear and tear or decay
    Bullet holes, burn marks, etc
    Paint, graffiti, posters, etc
    Signs and markings


    QuickDecals 2 makes it simple (and fun, honestly!), to add these details. I recommend watching the quick video to get all the details, but here's the basic idea:

    1) Drag-n-drop textures to the QuickDecals Window, then organize as needed
    2) Set Per-Decal settings, one at a time or multiple at once
    3) Pack Atlases to reduce drawcalls
    4) Select one or multiple Decals (for randomizing) and "Shift + Right-Click" to place

    As the video shows, you can very quickly make any Unity scene look alive, exciting, and full of interesting detail! QuickDecals makes this simple to do, and extremely performance-friendly, thanks to the built-in atlas creation ability.

    Notes and Special Info:
    Upgrading: QuickDecals 2 is a FREE upgrade for all current QuickDecals users, of course
    Compatibility: Unity Free and Pro, v3.5.7 and up. All platforms (Mobile, Web, PC, Console, etc) supported.
    Decal Textures: Any texture file will work, use the Alpha Channel for Transparency
    Curved Surfaces: QuickDecals places a single quad (polygon) with the texture applied, it does not use Projection- this is great for performance, but only works on flat surfaces.
     
  2. yahodahan

    yahodahan

    Joined:
    Apr 26, 2009
    Posts:
    1,379
    A quick note: I am currently submitting the update to the Asset Store, if you purchase and recieve the "old" version of QuickDecals, just email me (contact@procore3d.com) and I'll send the new version directly to you. I'll update this ASAP when the new package is live on the Asset Store!
     
  3. n8

    n8

    Joined:
    Mar 4, 2010
    Posts:
    147
    This is awesome!! Thank you so much for the hard work you guys are putting in lately! It seems like the update is live in the asset store now.
     
  4. yahodahan

    yahodahan

    Joined:
    Apr 26, 2009
    Posts:
    1,379
    Thanks n8! ...and yes, it's live on the Asset Store already, thanks Asset Store folks! :)
     
  5. Kilonne

    Kilonne

    Joined:
    Nov 17, 2013
    Posts:
    18
    Looks good, really !
    Do you plan to add projection features to use with curved surfaces later ?
     
  6. hamyshank

    hamyshank

    Joined:
    Jan 31, 2013
    Posts:
    88
    Thank you for update!
     
  7. yahodahan

    yahodahan

    Joined:
    Apr 26, 2009
    Posts:
    1,379
    Thanks Kilonne- yes, we will be adding Projection for curved surfaces. However, that might be kept for a "ProDecals" version. If we go that route, we'll give discounts for the cost for anyone who wants to upgrade of course. For example, if you buy QuickDecals for $10, then ProDecals comes out in a month for $30, you will be able to purchase ProDecals for $20 (minus the $10 already spent on QuickDecals). Currently, we'd have to do that via direct payment/etc, but hopefully the Asset Store will support "upgrades" in time :)
     
  8. yahodahan

    yahodahan

    Joined:
    Apr 26, 2009
    Posts:
    1,379
    You're welcome, hamyshank! :)
     
  9. im

    im

    Joined:
    Jan 17, 2013
    Posts:
    1,396
  10. Jason-King

    Jason-King

    Joined:
    Oct 28, 2010
    Posts:
    56
    Does QuickDecals2 work for adding bullet holes and blood splatters and such at runtime? Or does it work only in editor?
     
  11. karl_

    karl_

    Joined:
    Mar 4, 2010
    Posts:
    464
    It doesn't have a nice API for doing such, but it would be pretty easy to dissect the Editor's placement code and re-implement at runtime. I've added runtime support to the feature list for the next version, and will post back as soon as it's implemented.
     
  12. Elideb

    Elideb

    Joined:
    Jul 29, 2014
    Posts:
    10
    Hi

    Evaluating decal systems for our game, we have one question your tutorial videos did not answer: are the decals created static? i.e. if you move the object you placed the decal on, does the decal move with it? We need that behaviour because, although we would place the decals in the editor, our rooms would later be placed procedurally across the level, each at a different position.
    We would need each room to keep its decals as part of its prefab, so we can move them around and duplicate them without problem.

    Would QuickDecals help with that?

    Thanks,
    Elideb
     
  13. yahodahan

    yahodahan

    Joined:
    Apr 26, 2009
    Posts:
    1,379
    Hi Elideb- QuickDecals just creates the Decal, it would be up to you how the Decal behaves past that. In your situation, I would suggest parenting the decal to the object that you want it to move with, and un-checking the "Static" checkbox in it's inspector.

    Let me know if that helps! :)
     
  14. Elideb

    Elideb

    Joined:
    Jul 29, 2014
    Posts:
    10
    Yep, that helps. I was not sure you could move the decals out of the hierarchy where they were created.
    Now the only issue remaining is the ability to work with non-flat surfaces, but the importance of that is for the artists to evaluate.

    Thanks.
     
  15. yahodahan

    yahodahan

    Joined:
    Apr 26, 2009
    Posts:
    1,379
    Great :)

    About non-flat surfaces: that's important indeed, and we'll be adding that ability in the future, as soon as ProBuilder 2.3 is finished!
     
  16. chaneya

    chaneya

    Joined:
    Jan 12, 2010
    Posts:
    416
    I just purchased QuickDecals and think the interface is very nice however I've identified a problem.

    When I make the DecalParent into a prefab and then delete the original and drag the prefab into my scene, all of the decals no longer have Meshes associated with them. As far as I can tell, there is no way to instantiate the decals into a scene because for some reason they lose their meshes. I also don't understand why I can't find the meshes for the decals in my Project. I can see that the decals have meshes when they are first created, the inspector has a mesh component for each decal and it shows a reference to DecalMesh-indexnumber. But when I click on that mesh reference in the inspector, it does not show me where the mesh is in my project.

    My guess is you are using some built in unity function for creating a mesh but since those meshes are not actual objects, they disappear when you try to make the decals into a prefab or simply try to load them during runtime.

    I'm using Unity Pro 4.6.0b17 with iOS build.

    Thanks
    Allan
     
  17. yahodahan

    yahodahan

    Joined:
    Apr 26, 2009
    Posts:
    1,379
    Hi Allan- thanks for posting. I'll add this to the tracker, and we'll get it fixed ASAP.

    Also, we now have the official ProCore Forum at "www.procore3d.com/forum", which is the best place to report bugs/etc :)
     
  18. the_motionblur

    the_motionblur

    Joined:
    Mar 4, 2008
    Posts:
    1,774
    Does this work with terrains as well or is it regular mesh data only?
     
  19. yahodahan

    yahodahan

    Joined:
    Apr 26, 2009
    Posts:
    1,379
    Sure, that should work fine, although QuickDecals doesn't (yet!) project onto non-flat faces. That's in the works though, just a matter of too much to do with ProBuilder right now! :)
     
  20. the_motionblur

    the_motionblur

    Joined:
    Mar 4, 2008
    Posts:
    1,774
    Okay I see. That is actually more unpleasant than the terrain. ;)
    I'll wait for an update, then. ProBuilder is more important (and it still rocks, BTW).

    Thanks for the reply.
     
  21. yahodahan

    yahodahan

    Joined:
    Apr 26, 2009
    Posts:
    1,379
    Agreed, and we are working toward that! For the moment, QuickDecals is just that- a "quick" option that works great for simple surfaces (especially those made with ProBuilder/Prototype).
     
  22. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    12,917
    If the decal is over a non flat surface, will it just be projected in a flat way in its mean height, or not work at all ?

    Thanks
     
  23. yahodahan

    yahodahan

    Joined:
    Apr 26, 2009
    Posts:
    1,379
    It's a just a regular flat quad, so it will simply stick at the point you clicked. In some cases, it will actually look just fine :)
     
  24. yuewahchan

    yuewahchan

    Joined:
    Jul 2, 2012
    Posts:
    309
    just purchase QuickDecals, it is excellent.
    A small feature request, allow to change the default asset save path. It is hard coded in script.
     
  25. yahodahan

    yahodahan

    Joined:
    Apr 26, 2009
    Posts:
    1,379
    Thanks- we'll add that to the list, sure!
    gw
     
  26. ZJP

    ZJP

    Joined:
    Jan 22, 2010
    Posts:
    2,649
    Any new about the 'curved thing'?
     
  27. yahodahan

    yahodahan

    Joined:
    Apr 26, 2009
    Posts:
    1,379
    Nothing yet, sorry, still busy re-working PB for Unity 5 compatibility, fixes, etc. We hope to have time to concentrate on the smaller tools in the coming months though.
     
  28. yuewahchan

    yuewahchan

    Joined:
    Jul 2, 2012
    Posts:
    309
    for the default asset save path, please don't use EditorPrefs
     
  29. yahodahan

    yahodahan

    Joined:
    Apr 26, 2009
    Posts:
    1,379
    Hi there! Could you explain what the issue is? Thanks!
     
  30. yuewahchan

    yuewahchan

    Joined:
    Jul 2, 2012
    Posts:
    309
    It is not source control friendly.
     
  31. Ducahl

    Ducahl

    Joined:
    Dec 9, 2014
    Posts:
    20
    Hi, great tool! I am curious as to whether or not you have addressed the issue of generating a prefab out of the decals and it not being able to save a mesh?
     
  32. karl_

    karl_

    Joined:
    Mar 4, 2010
    Posts:
    464
    Yes, decals work as prefabs now. Just make sure that in the QuickDecals preferences tab you have 'Hit Transform is Parent' checked.
     
  33. TimGuth

    TimGuth

    Joined:
    Dec 6, 2014
    Posts:
    1
    Hi, is it possible to use your own shader with the decal ? I want to create neon decals and use a selfillum shader. Thanks.
     
  34. yuewahchan

    yuewahchan

    Joined:
    Jul 2, 2012
    Posts:
    309
    please move QuickDecalsDatabase.asset out of the Resources folder because it reference the decal texture which will be built into the output package (larger built size) that is not needed in runtime.
     
  35. karl_

    karl_

    Joined:
    Mar 4, 2010
    Posts:
    464
    Yes, once you pack an atlas the material is just like any other material in Unity - just assign the shader you'd like to use.

    I changed the default path to QuickDecals/Database for the next patch. To change it now, just open qd_Editor and change line 19 to this:

    Code (csharp):
    1. const string QD_DATABASE_PATH = "Assets/ProCore/QuickDecals/Database/QuickDecalsDatabase.asset";
    No other changes are necessary. This will be the default path in the next release.
     
  36. Ducahl

    Ducahl

    Joined:
    Dec 9, 2014
    Posts:
    20
    Hi, love the product.

    I'd like to make a request for the atlaser to recognize normal,spec/metallic, height, ao, emissive maps and attempt to atlas those as well. This is so we can use the decals with the new Standard shader workflow and have manhole covers that pop out, or metallic surfaces within the decals defined by the extra shader passes.
     
    karl_ likes this.
  37. JacobDzwinel

    JacobDzwinel

    Joined:
    Dec 19, 2013
    Posts:
    26
    Does it support non-flat surfaces?
     
  38. karl_

    karl_

    Joined:
    Mar 4, 2010
    Posts:
    464
    Nope, this system uses a 2 tri billboard to apply decals.
     
  39. mwituni

    mwituni

    Joined:
    Jan 15, 2015
    Posts:
    345
    Hi,

    I just tried this product and have a few comments :

    1) As others have mentioned, it needs to support materials as well as textures (so all the 3D wizardry of heightmaps etc can be used). I was surprised it only supports flat textures.

    2) I'd like an easy way to edit UV's - to shift and scale the UV on the billboard ... eg. to apply only part of the decal to a surface. Alternatively put some easy link in to edit the billboard UV's with ProBuilder
     
  40. yahodahan

    yahodahan

    Joined:
    Apr 26, 2009
    Posts:
    1,379
    Hi there-

    1) Agreed, we'd like to add support for this as well, just a matter of time!

    2) Hmm, you could try "UVee" on the Asset Store, or use ProBuilder's "ProBuilderize" function?
     
  41. mwituni

    mwituni

    Joined:
    Jan 15, 2015
    Posts:
    345
    Hi,

    Thanks for the reply.

    (1) Good. Especially for things like 'damage'

    (2) Without the ability to re-use parts of textures, the use of the tool to apply randomness is very limited, as it can only apply full textures - so placing the same full texture a few times is not random.

    It also means it doesn't help much in creating efficient scenes - as users will need to load more textures where they could have re-used (parts of) existing ones.

    Here's a good example ....


    ideally the 'dirty' decal on left should be used on the column, as its too expensive to clip externally and use two textures. It can't be used at same UV scale as its too wide, and the billboard can't scaled to fit width as the texture is very wide and will have non-matching (condensed) streaks.

    So the billboard should be sized to fit column width, and the UV on billboard needs to be scaled so streaks are similar to that on main billboard.
     
  42. yahodahan

    yahodahan

    Joined:
    Apr 26, 2009
    Posts:
    1,379
    Interesting, I see. Makes me think perhaps we could just use a purely-manual approach to the decal sheet UVs. Or at least an option, yes :)

    Thanks!
     
  43. xDavidLeon

    xDavidLeon

    Joined:
    Jun 9, 2014
    Posts:
    123
    Since Unity 5.1.0p1, Quick Decals 2 is making my scenes crash. I just add some decals to the inspector, pack the Atlas, and place some decals in the scene. When I hit Play the editor freezes.

    If I remove the Qd_Decal script from the decal GameObject it works fine.

    I think the bug is at line 103 of qd_Decal.cs, in the OnDrawGizmos function. When it loops through the mesh normals it tells me that m.normals.Length is 60973 (wtf..? isn't it a Quad?) so it gets frozen there. If I remove the OnDrawGizmos function it works fine.
     
  44. xDavidLeon

    xDavidLeon

    Joined:
    Jun 9, 2014
    Posts:
    123
    Oh.. Kept testing and it doesn't place my selected decal.. it instantiates only quads from the first material/atlas created, and ignores other decal atlases.
    Even if I go to the QuickDecalsDatabase and modify the entries manually, when I open the QuickDecals Window it resets the database, putting to every decal group the same material and name.
     
    Last edited: Jun 17, 2015
  45. yahodahan

    yahodahan

    Joined:
    Apr 26, 2009
    Posts:
    1,379
    Hi xDavidLeon! Could you post this bug report directly to the official support forum at "www.procore3d.com/forum"? That way we can track and fix it up much more easily. Thanks!
    gw
     
  46. googler

    googler

    Joined:
    Mar 13, 2012
    Posts:
    14
    Hello, why every decal keeps a reference to the original texture? As I understand, decals don't use original texture in runtime, but still hold it.
     
  47. DennG

    DennG

    Joined:
    Dec 5, 2013
    Posts:
    158
    Is it possible to do normal mapped decals?
    Or maybe decals without color at all.. to place bumps on flat surfaces... that'd be awesome!
     
  48. TokyoDan

    TokyoDan

    Joined:
    Jun 16, 2012
    Posts:
    1,080
    I have a tile-based map. At runtime I want the player to be able to specify that a selected tile be specified as a spawn point. I plan on using a decal system to mark the specified tile as the spawn point. Can I do this in code with QuickDecals?
     
  49. karl_

    karl_

    Joined:
    Mar 4, 2010
    Posts:
    464
    The decal placement code is all editor-side currently, though there's no technical reason that prevents it from being rewritten for use in runtime. Here's a quick example script showing one way to do it (this method loads only texture atlased decals, but could easily be swapped for non-atlased).

    Code (csharp):
    1.  
    2. using UnityEngine;
    3. using System.Collections;
    4. using System.Collections.Generic;
    5. using System.Linq;
    6. using ProCore.Decals;
    7.  
    8. public class MouseClickDecal : MonoBehaviour
    9. {
    10.     /// the QuickDecalsDatabase asset
    11.     public qd_Database decalDatabase;
    12.     /// this represents the loaded decals from the database.  there are two stores- one is the atlased
    13.     /// version, and one is non-atlased.
    14.     private List<DecalGroup> decalGroups;
    15.     /// the name of the decal you'd like to instantiate
    16.     public string decalName = "RoundBrick";
    17.     /// the decal that will be placed
    18.     private Decal selectedDecal = null;
    19.     /// the material that selectedDecal belongs to
    20.     private Material selectedMaterial = null;
    21.     /// nudge the decal off the hit surface by this amount to avoid z-fighting
    22.     [RangeAttribute(0f,.01f)]
    23.     public float decalOffset = .0001f;
    24.  
    25.     void Awake()
    26.     {
    27.         if(!decalDatabase.LoadDecalGroups(DecalView.Atlas))
    28.         {
    29.             Debug.LogWarning("Failed loading decal groups");
    30.             selectedDecal = null;
    31.             return;
    32.         }
    33.        
    34.         decalGroups = decalDatabase.decalGroups;
    35.  
    36.         for(int i = 0; i < decalGroups.Count; i++)
    37.         {
    38.             selectedDecal = decalGroups[i].decals.FirstOrDefault(x => x.name == decalName);
    39.  
    40.             if(selectedDecal != null)
    41.             {
    42.                 selectedMaterial = decalGroups[i].material;
    43.             }
    44.         }
    45.     }
    46.  
    47.     void Update()
    48.     {
    49.         if(Input.GetMouseButtonDown(0) && selectedDecal != null)
    50.         {
    51.             Ray screenRay = Camera.main.ScreenPointToRay(Input.mousePosition);
    52.             RaycastHit hit;
    53.  
    54.             if(Physics.Raycast(screenRay, out hit))
    55.             {
    56.                 Rect textureRect = selectedDecal.atlasRect;
    57.  
    58.                 /// paramaters to create mesh are:
    59.                 ///     - texture atlas material
    60.                 ///        - decal texture rect in atlas
    61.                 ///        - scale
    62.                 GameObject decalObject = qd_Mesh.CreateDecal(selectedMaterial, textureRect, 1f);
    63.  
    64.                 decalObject.transform.position = hit.point + (hit.normal * decalOffset);
    65.                 decalObject.transform.localRotation = Quaternion.LookRotation(hit.normal);
    66.             }
    67.         }
    68.     }
    69. }
    70.  
     
  50. lewisboadle

    lewisboadle

    Joined:
    Apr 26, 2014
    Posts:
    7
    Hi guys,

    love your tools! Am currently evaluating QuickDecals and comparing it to ADAOPS. I see QD doesn't currently support Materials. Any plans to implement this? I'd like to add normal maps so I can use if for things like cracks.

    Thanks!