Unity Community


Page 1 of 2 12 LastLast
Results 1 to 20 of 33

  1. Posts
    11

    ABI: Automatic 3D Billboard Imposters [RELEASED]

    Hello everyone, ABI has just been released!

    Name:  gI5x4tC.png
Views: 1323
Size:  98.9 KB

    What is it?

    Automatic 3D Billboard Imposters (ABI) is an automatic level of detail (LOD) solution that bring unparalleled performance to your games.

    ABI is quick to integrate and allows you to efficiently render thousands of objects with minimal geometry and draw calls. In short, ABI smoothly replaces distant models with simple 2D textures giving a massive performance boost. Unlike traditional billboard and imposter systems, ABI uses a very small amount of texture memory and allows for easy batching with both Unity Free& Unity Pro. The generated output also supports smooth LOD transitions with stippling, and works on mobile!



    Features:

    •Smooth runtime imposter transitions.
    •Export imposters to OBJ files.
    •Export prefabs that automatically fade to imposters at runtime according to the camera.
    •Lightning fast imposter generation for large numbers of objects.
    •Control over imposter y-plane position.
    •Control over texture size.
    •Automatically layout models for previewing.
    •Imposter proportions match input models.
    •Intelligent priority updates.
    •Three optimized stippling shaders to choose.
    •Lightweight optimized C# scripts.

    Link to the Asset Store
    Last edited by cwkx; 10-11-2013 at 07:08 AM.


  2. Location
    Orlando, Fl
    Posts
    649
    very awesome, question though.. do all of the imposter objects batch? Even imposter objects from different objects.. as some sort of atlassed material. Because that would be huge.


  3. Posts
    2,247
    Looks good! Bookmarked and added to shopping list.


  4. Posts
    14
    So if I insert an FBX into Unity could I drag that into the billboard?


  5. Posts
    2,247
    A suggestion - can you make it one button GROUP CONVERT - specify the directory where the models are, and it automatically convert all the models inside to imposters by reading in the original names and adding a suffix "-imp" in file nameS. Eg. Motorbike.fbx becomes --> Motorbike-imp.fbx and Motorbike-imp.jpg.

    That would make this a truely wonderful and productive tool.


  6. Posts
    2,247
    Also, could you add an option to only generate imposter for ONE axis only? eg. an option to toggle which axis(es) to render.

    Another suggestion I just thought of...maybe support Normal Map generation for those generated sprite?


  7. Posts
    11
    I just added priority updates to version 1.5 which greatly increases performances when you have about 10,000 imposters visible. This update should be available to the asset store shortly.

    Quote Originally Posted by LordSoth30 View Post
    So if I insert an FBX into Unity could I drag that into the billboard?
    Yep, drag the FBX from Unity Project explorer into the Imposter Editor script, click Play & Generate & Export - this'll create an OBJ of the imposter, and a Prefab which connects the imposter to the original FBX model. It's recommended to change the shaders on the FBX materials to one of the provided ones to get two-sided stippling blending (although this is not mandatory).

    Quote Originally Posted by I am da bawss View Post
    A suggestion - can you make it one button GROUP CONVERT - specify the directory where the models are, and it automatically convert all the models inside to imposters by reading in the original names and adding a suffix "-imp" in file nameS. Eg. Motorbike.fbx becomes --> Motorbike-imp.fbx and Motorbike-imp.jpg.

    That would make this a truely wonderful and productive tool.
    Originally I had something similar - the problem is that you lose control over specifying the Y-axis step & tile sizes (see screenshots); in practice its always good to tune these for each model anyway in the Imposter Editor (as tress should have higher planes than buildings etc).

    In our large project, which uses hundreds of models from many model packages, it made it easier to maintain and regenerate imposters using the current system; as you can save the imposter scene to save the per-imposter settings stored in the editor script (this is especially useful if your updating models/textures and want to keep the settings).

    Quote Originally Posted by kurylo3d View Post
    very awesome, question though.. do all of the imposter objects batch? Even imposter objects from different objects.. as some sort of atlassed material. Because that would be huge.
    Good question! Stippling (smooth LODs) needs to set the shader params per model (which typically invalidates all batching) -however to address this problem I use a method for switching shared/instanced materials after the stippling region which enables batching per-model; adding one large atlas with stippling would likely decrease this approach because of this.

    If people give this good reviews and the sales pick up, I can keep looking into this area, however at the moment (in practice) it doesn't seem to be too important as 60 objects = 60 draw calls of 10,000 instances batched can still render at 60fps (which is quite a lot of scene diversity)! Also you can create imposters for groups of objects easily in the pipeline.
    Last edited by cwkx; 10-11-2013 at 10:15 AM.


  8. Posts
    11
    Quote Originally Posted by I am da bawss View Post
    Also, could you add an option to only generate imposter for ONE axis only? eg. an option to toggle which axis(es) to render.

    Another suggestion I just thought of...maybe support Normal Map generation for those generated sprite?
    Choosing one plane with the current system creates undesirable popping artifacts. You'd need to support a more traditional imposter approach (as shown in the manual) which also has undesirable popping between the image swapping- even stippling between the tile images with a traditional approach gives lots of fuzzy stippling artifacts (best kept minimum) unless you add lots of view images into the atlas - but this greatly increases texture memory to the extent that you can only have a few imposters of low image resolution - which is one of the main things that I have tried so hard to cut down. I'd like this system to aim at creating imposters for lots of objects instead of just trees in a forest.

    Normal maps is something i'd like to add if it gets good ratings and the sales pick up; its not an easy addition with Unity Free as you need to replace input model shaders for capturing world-space normals (tangent normals would look too ugly with the simplified geometry - and you can't use render to texture fullscreen shader to make this easier). Although the current imposters already support lighting which doesn't look too bad. Let me know if you any thoughts on this.

    Thanks for your suggestions!
    Last edited by cwkx; 10-11-2013 at 10:15 AM.


  9. Posts
    933
    Have u tested mobile performance? It seems you are using transparent shader, so that amount of overdraw on mobile is not good for performance. It would be better if the vertex is to fit the model so it can use non transparent shader.


  10. Posts
    11
    Quote Originally Posted by imtrobin View Post
    Have u tested mobile performance? It seems you are using transparent shader, so that amount of overdraw on mobile is not good for performance. It would be better if the vertex is to fit the model so it can use non transparent shader.
    I had mentioned something on the lines to this in Manual.pdf - its best to assign the "Mobile/Particles/VertexLit Blended" to the generated imposters (which is very easy to do) as discard and clip calls are expensive on mobile hardware. Polygonizing the shape outline would require lots of tessellation on high-frequency features, otherwise it wouldn't look good.
    Last edited by cwkx; 10-11-2013 at 10:33 AM.

  11. p6r p6r is offline

    Location
    France
    Posts
    815
    Very clever and nice !!!
    Not for Unity 3.5 ???

    6R


  12. Posts
    1,381
    Quote Originally Posted by cwkx View Post
    I had mentioned something on the lines to this in Manual.pdf - its best to assign the "Mobile/Particles/VertexLit Blended" to the generated imposters (which is very easy to do) as discard and clip calls are expensive on mobile hardware. Polygonizing the shape outline would require lots of tessellation on high-frequency features, otherwise it wouldn't look good.
    I'm not sure I agree. The tessellation could be done on a lower rez version of the texture and you could event drop points that are too close. I bet it would help tremendously compared to having all the extra transparency. Some of the low end Android devices really struggle with transparency.
    Slender Man Chapter 1:Alone [Google Play Store] [iTunes]

    Slender Man Chapter 2:Survive [Google Play Store] [iTunes]


  13. Posts
    11
    Quote Originally Posted by kenlem View Post
    I'm not sure I agree. The tessellation could be done on a lower rez version of the texture and you could event drop points that are too close. I bet it would help tremendously compared to having all the extra transparency. Some of the low end Android devices really struggle with transparency.
    Alright, I can look into this for improving the mobile performance on older hardware when I have some time or if the sales go well. Thanks both for your suggestions.


  14. Location
    Orlando, Fl
    Posts
    649
    Quote Originally Posted by cwkx View Post
    I just added priority updates to version 1.5 which greatly increases performances when you have about 10,000 imposters visible. This update should be available to the asset store shortly.



    Yep, drag the FBX from Unity Project explorer into the Imposter Editor script, click Play & Generate & Export - this'll create an OBJ of the imposter, and a Prefab which connects the imposter to the original FBX model. It's recommended to change the shaders on the FBX materials to one of the provided ones to get two-sided stippling blending (although this is not mandatory).



    Originally I had something similar - the problem is that you lose control over specifying the Y-axis step & tile sizes (see screenshots); in practice its always good to tune these for each model anyway in the Imposter Editor (as tress should have higher planes than buildings etc).

    In our large project, which uses hundreds of models from many model packages, it made it easier to maintain and regenerate imposters using the current system; as you can save the imposter scene to save the per-imposter settings stored in the editor script (this is especially useful if your updating models/textures and want to keep the settings).



    Good question! Stippling (smooth LODs) needs to set the shader params per model (which typically invalidates all batching) -however to address this problem I use a method for switching shared/instanced materials after the stippling region which enables batching per-model; adding one large atlas with stippling would likely decrease this approach because of this.

    If people give this good reviews and the sales pick up, I can keep looking into this area, however at the moment (in practice) it doesn't seem to be too important as 60 objects = 60 draw calls of 10,000 instances batched can still render at 60fps (which is quite a lot of scene diversity)! Also you can create imposters for groups of objects easily in the pipeline.
    Thanks for the reply,

    I honestly prefer the less draw calls the better vs transparency since i develop heavily on mobile. Transparency in general hurts mobile.. even tegra 3... overdraw sucks, but aside form that draw calls are just as bad.. id rather have 1 or 2 draw calls rather then 60. Either way I love your approach and ill probably pick up your tool just so i can tinker with it and make my own items to batch.

  15. Super Moderator
    Location
    Great Britain
    Posts
    9,650
    On my machine, the impostors look dramatically different from the objects. I'm wondering if it's a mac issue, or what. I don't find it a compelling demo at the moment. If you want to expand on this middleware, perhaps include a way to refresh the impostors, for example have a 1024x1024 render texture and draw impostor updates to it - an atlas for impostors. Or expand on this system in some way to improve it.
    Last edited by hippocoder; 10-13-2013 at 08:39 AM.
    Currently working with Sony on our new
    PS4 and Vita game in Unity!

    This post is not representative of Simian Squared Ltd


  16. Posts
    11
    Quote Originally Posted by hippocoder View Post
    On my machine, the impostors look dramatically different from the objects. I'm wondering if it's a mac issue, or what. I don't find it a compelling demo at the moment. If you want to expand on this middleware, perhaps include a way to refresh the impostors, for example have a 1024x1024 render texture and draw impostor updates to it - an atlas for impostors. Or expand on this system in some way to improve it.
    It should look like the youtube? You can also set the lod scalar which changes the projected size (screen-space error) for when the model changes to the imposter. I'd like to add optional runtime render to texture updates, but it requires Pro which I don't have & can't afford at the moment.

    Quote Originally Posted by kurylo3d View Post
    Thanks for the reply,

    I honestly prefer the less draw calls the better vs transparency since i develop heavily on mobile. Transparency in general hurts mobile.. even tegra 3... overdraw sucks, but aside form that draw calls are just as bad.. id rather have 1 or 2 draw calls rather then 60. Either way I love your approach and ill probably pick up your tool just so i can tinker with it and make my own items to batch.
    Thanks, that'd be great. I'd like to work on mobile performance as the next thing, with some good suggestions in the previous posts and the option to atlas without stippling would be an easy addition. At the moment this has only got a couple of sales and no good reviews; hopefully this can pick up soon and give me more motivation/time for this.


  17. Posts
    69
    Hi ! I Just got 2 days ago your Extension !
    Loved The Concept ! There is Nothing Like this in unity !
    Is very cool Idea COngrats !
    ______


    I have Some QUestions And some Features talks About your product

    - Can your Extension Work In Conjuction with With Unity pro Lods ?
    - Can your Extension Work With Instant Oclusion From french faso. ? I just recently got it also ...

    - Is it possible to have a Severall Lods And Load at Runtime From Disck FEatures ?
    - Is also Possible to paint instances Or Scatter Them After Setup ?

    Imagine a Whole Forest Much like CryENgine level of Quality tipe of work in UNITY.
    WITH YOUR PLUGIN

    From your Plugin features :

    - As far as i see - It needs Severall Lods Levels before turning into Bilboard. "Not just 2" on geometry & Bilboard ..
    - As far as i See, the amount of Trees and Grass And Rocks and all everything there must be at such a Massive amount of detail that also needs a way to go Over Unity 32Bits 3gb Limit ...
    - - And for that Needs a way to Scatter Those, But in Editor make them bilboards points or nulls. ( Using the bilboards just in Editor For performance )
    - - But in Runtime Load the actual Geometry ... That in order to Overcome the Unity Not beying 64Bits limit ...

    I would like to Help you Making your plugin Reach another degree ...

    i WIll be TEsting it this next month and will Trow Some Tests and ideas And will Debug Your product Features Not for Mobile / but for Next gen "CryEngine Like Results" ... And i will go posting Here the Results if you dont mind.

    Im a Customer Also from InstancOC And would like to Integrate both Solutions ...
    You can See here me Talking about my project ... If you Wounder of what the Souls Project is going At !

    http://forum.unity3d.com/threads/166...31#post1374631

    THANKS SO MUCH !


  18. Posts
    11
    Hi SoulSaga,

    Thanks for your kind words and support in purchasing this!

    Quote Originally Posted by SOULSSAGA View Post
    - Can your Extension Work In Conjuction with With Unity pro Lods ?
    - Can your Extension Work With Instant Oclusion From french faso. ? I just recently got it also ...
    - The imposters are naturally exported to OBJ files (as well as linked prefabs). You can use these OBJ's for Unity pro Lods or for other frameworks (InstantOC) - however stippling will not work by default as parameters need to be set with the ImposterLOD.cs script (please see explanation below)

    - ImposterLOD.cs creates a copy of the imposter with a shared material for automatic batching, handles (in version 1.5) smart lazy updates (to stop too much processing with 10,000+ objects), uses optimized squared distances, and sets the stippling parameters. This script is very small (83 lines) and should make sense after a bit of studying. You are free to replace (Ctrl+H in MonoDevelop) "Lod_1" and "Lod_2" with other names (such as "Lod_4" and "Lod_5" in both the ImposterEditor.cs and ImposterLOD.cs script and it should be compatible with other scripts, LODs, and culling solutions.

    Quote Originally Posted by SOULSSAGA View Post
    - Is it possible to have a Severall Lods And Load at Runtime From Disck FEatures ?
    - Is also Possible to paint instances Or Scatter Them After Setup ?[/INDENT]
    - These imposters are already intended for very far view distances and don't use much memory; I use 128^3 each by default and will later add atlas to pack these in a later update. I haven't bought SmartLOD but wouldn't all that extra disk overhead generate page faults and impact performance for this kind of far imposter data? (Although it makes sense for nearby LODs).
    - You can instantiate the imposter prefabs like any other objects (recommended to use an InstancePool). I already populate planets this way for a large-scale voxel system i'm working on.

    Quote Originally Posted by SOULSSAGA View Post
    - As far as i See, the amount of Trees and Grass And Rocks and all everything there must be at such a Massive amount of detail that also needs a way to go Over Unity 32Bits 3gb Limit ...
    - - And for that Needs a way to Scatter Those, But in Editor make them bilboards points or nulls. ( Using the bilboards just in Editor For performance )
    - - But in Runtime Load the actual Geometry ... That in order to Overcome the Unity Not beying 64Bits limit ...[/INDENT]
    That's a good suggestion - i'll see about improving Unity Editor performance for the next update (after 1.5). Users can email me chris<dot>willcocks<at>gmail.com if you don't want to wait for the asset store update and want more personalized support.

    Quote Originally Posted by SOULSSAGA View Post
    I would like to Help you Making your plugin Reach another degree ...

    i WIll be TEsting it this next month and will Trow Some Tests and ideas And will Debug Your product Features Not for Mobile / but for Next gen "CryEngine Like Results" ... And i will go posting Here the Results if you dont mind.
    - I'd love to see your results and hear your feedback of integrating this with the InstantOC framework. I "think" I already do something "similar" with the large scale voxel planet system i'm developing (it changes the voxel chunk LODs based on heuristic of the uniform distribution of rays from the camera giving implicit occlusion culling for other object chunks and allowing for some other interresting effects & procedural placement options of ray intersections)

    Goodluck with your project!


  19. Location
    London
    Posts
    478
    Nice asset cwkx

    Bookmarked and will probably buy today
    Favorite Assets List

    1: Amplify Texture --- Unity Forum Link --- Official Website

    2: Alloy Physical Shader Framework --- Unity Forum Link

    3: Rain{indie} --- Unity Forum Link --- Website Link


  20. Posts
    11
    Quote Originally Posted by MoHoe View Post
    Nice asset cwkx

    Bookmarked and will probably buy today
    Thanks!

Page 1 of 2 12 LastLast

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •