[unity][wip] Sci-fi interior , modularity and workflow practice

polycounter lvl 5
Offline / Send Message
nizu polycounter lvl 5


Personal project,  work in progress : all major parts are in,  but looking for C&C on what to improve and to polish mostly texturing and lighting.

The main idea was to have some fun with sci-fi designs, and practice modularity : the corridor part was made as if it was chunks for a bigger modular env. set,   and the ever present question is .. how much  can recycle parts and uv chunks , not consuming more uv space ?  So things like the corridor bend or the double doors were cobbled together  trying to see at which point it's too much recycling and what's really important to make 'unique texture' in a mid-large env.
And also keeping copies and duplicates organized, being able to repack and rebake late in the project without too much pain.

Modeled in Blender and textured in Substance Painter, rendered in Unity5.  The point of modularity is also tied to procedural texturing / hipoly-lowpoly workflow: it  tends to make you think 1 piece of model = 1 chunk of uv, but of course that's not always necessary at all .. i still remember an awesome scifi env around this forum made with 1x 512 texture , Gosh !  :p
So i wanted to spend some time on that aspect, i didn't do anything crazy, it's still  4x 2k²  uv sheets for the whole env, but it confirmed recycling can go a long way and can be mixed with all the goodness of baking from a mesh and the specific dirts and AO you get that way.
Also not much stencils or complex material blends here,  thinking of tiles and recycling was enough for now.

The design refs are mixed and partly based on concept art from Frictional's Soma,  then as usual with personal projects i divide between following a good ref. concept and composition (best for quality of result imho) and freely practicing what you need to learn most (important too..)


There's some ugly aliasing and bad lightmap packing in these shots, visible in fullsize that i'm still looking into..



Substance baking meshes screenshots :








Also, while making this i was working on polishing my own 'python on post-its' export tools :D  .. those started as a few macros to rename object pairs for hipoly-lowpoly  and quickly going from Blender to Substance, then expanded with some macros for export to Unity (joining objects preserving custom normals, repacking uvs for use as lightmaps .. and few more boring but useful speed ups)
The code has been freely available on github (https://github.com/nizu/NZ-Tools)  for a while , but beware ! it's not really usable : not without a tutorial/doc and anyway likely too tied to my own workflow, so probably not worth it right now,  unless you just want to read the python as 'spare parts' .. but i'm happy to discuss the topic , and i'm working to make it a bit more useful for others (so stay tuned and ask if you want to know more)




        
 



Replies

  • Filipe
    Offline / Send Message
    Filipe vertex
    Nice job. I think it's looking great.
  • nizu
    Offline / Send Message
    nizu polycounter lvl 5
    Thanks :smile: 

    Some updates on panels .  I wanted to make floor and ceiling tiles that were not just squares, but slightly more complex modular bricks.
    This is the kind of stuff that really should use decals, specially for damage, just 2 damage variations take already plenty space (vs different panel designs) , aside from that, i'm happy  with how they don't get boring and repetitive too fast when used in the env, and the dyntopo sculpt in Blender is surprisingly fast and reliable on hardsurf meshes (i mean you just start sculpting on a mesh-modelled hipoly and  don't get too many technical issues or unusable polycounts) Also i didn't get  many issues projecting sculpted damage on the lopoly bases.



  • stilobique
    Offline / Send Message
    stilobique polycounter lvl 5
    Great, it's rendering with Unity ? Adding a particle dust can be great !
  • nizu
    Offline / Send Message
    nizu polycounter lvl 5
    Yes it's unity , and i was just thinking of that ! it's in 5.6 (agh, it all changed again! but mixed lights seem a very useful type) so i want to play some more with baked/realtime light combinations.
    I'm loving the combined post process behaviour (but not sure if AA wasn't better with cinematic effects betas ??)  and i tried Adam demo's volumetric on the big fan light, but got lots of banding, not easy to setup well  (and no support for sun lamp,  so with no dusty effects in the corridor, looks strange)
    I was thinking some smoke from vents as flipbook things (i'm not much of an fx guy, but basics are good to have for envs..)  and it's good that you mentioned particle dust..  i guess it can be a post fx or actual particle emitters in some cases, i'll look into it.   

  • nizu
    Offline / Send Message
    nizu polycounter lvl 5
    Oh ! i just noticed your signature link @stilobique ; ! Blender to Substance export tools ? me too !

    As i mentioned, mine is also on github  https://github.com/nizu/NZ-Tools ,
    and i just posted on my blog a few more details : https://nizuvault.wordpress.com/
    It's all a draft at this point ,  before trying it maybe wait next week, but it's already ok if you just want to read the python or you can read a description of the ops in my version (of basically the same tools you're working on)

    That's very cool, i came here looking for just this kind of stuff, sorry mine  doesn't have decent docs yet,  but it started as a project for personal/internal use and i'm slowly making it more accessible .. but as i hoped, it's the kind of tool that each/different artists can write themselves and maybe exchange pieces, without trying to make an uber-workflow thing good for everyone (like batch bakers in Blender.. i tried 3 and none would fit my workflow)  

    Stay tuned if you'd like i'll have updates in next days making it a bit easier to look at, and i'll check your addon !


  • stilobique
    Offline / Send Message
    stilobique polycounter lvl 5
    nizu said:
    Oh ! i just noticed your signature link @stilobique ; ! Blender to Substance export tools ? me too !

    As i mentioned, mine is also on github  https://github.com/nizu/NZ-Tools ,
    and i just posted on my blog a few more details : https://nizuvault.wordpress.com/
    It's all a draft at this point ,  before trying it maybe wait next week, but it's already ok if you just want to read the python or you can read a description of the ops in my version (of basically the same tools you're working on)

    That's very cool, i came here looking for just this kind of stuff, sorry mine  doesn't have decent docs yet,  but it started as a project for personal/internal use and i'm slowly making it more accessible .. but as i hoped, it's the kind of tool that each/different artists can write themselves and maybe exchange pieces, without trying to make an uber-workflow thing good for everyone (like batch bakers in Blender.. i tried 3 and none would fit my workflow)  

    Stay tuned if you'd like i'll have updates in next days making it a bit easier to look at, and i'll check your addon !

    Hehe, yes all artist use a personal workflow ; my bridge is for a personal used, and need to be improve. I need to write a renamer high/low poly ; but i'm generated any high poly with zbrush. And it's hard to find a time to work on it.
    Me too, my wiki/doc are not really explain my tool.

    I think try your addon this week-end, found an another way to work with Painter/Blender can be a good idea to improve my addon !

    Once again, really great job ! I'm stay here to see your next render :) .
  • macoll
    Offline / Send Message
    macoll polycounter lvl 6
    Yep that looks great ! Will follow your work ;)

    I think the floor looks too busy, this is the only thing that bothers me. I think for keeping the overall design readable, you should simplify the floor. (the rule is: 30% of the space should contains 70% of the meshes....+ or - )

  • nizu
    Offline / Send Message
    nizu polycounter lvl 5
    @stilobique : Great, i will do a few commits before weekend so it's a bit clearer, and since you know the topic already, it'd be very useful to have some impression (even just what i need to explain better about usage, or why you wouldn't use my workflow , i.e. my script assumes you do lowpoly 1st and start hipoly from a copy of that.. i think that's faster, but for max. freedom and quality others might prefer to work the other way around)

    @macoll : Thanks !  very good point, i only cared about repetitive, i'll do another pass , some larger, simpler modules , and break down the frames of those panels to be modular.

    Meanwhile, i  should run a ton of bakes (one thing that on real projects comes later and in too much of a hurry :) )
    Leaving aside the realtime/ baked thing for a sec (this is all baked or mixed light)

    I had some serious headhaches with unity 5.0-5.1 until they refined the uv preservation (ignore normals, don't simplify)
    And since 5.3 i'm generally happy with what i get in realtime gi, by giving unity a model with Uv1 being a auto repack of  my texture uvs.
    In this scene i enabled charts simplification and got no issues.

    But the static bakes.. i'm still thinking :  Unity atlases by object, but doesn't repack your uvs.  So it's fine if you have many small objects, or 1 big mesh  corresponding to a whole lightmap sheet. But if you're in between, like exporting 1 mesh per room, you end up with horrible packing efficiency.
    I never let Unity fully generate lightmap uvs, because of too many errors and absurd thin islands in the past, but i'm not sure that would make a difference (still an atlas of squares packed by object)

    Also still figuring what the uv- preserving or simplyifing affects , realtime but baked too ? that big island with tiny uv chunks wasn't there until i disabled ignore normals .. i think it has improved  'sharpness' of lightmap (by breaking it on hard edges) but that packing looks made of pieces waay too small.
    Lots of variables, but a few more tests will be interesting..


    Edit : Ugh , i got it, preserve normals doesn't affect static bakes, not the issue here.

     it's my packing macro ..  I just learnt something important about Blender scripting then .. if you don't explicitly write all parameters for an operation , it will use whatever crazy value the user has set previously for that operator , probably in a very different use case.. must be careful ! so in the last few exports it used a large padding i had set for a manual export of the pipes, of course i didn't meant that to be used by the script, and it even remained as new default in new sessions.

    Edit 2: 
    Exported as single object , and since it's more than 65k it got split (120k total, the vault ceiling should use simpler panels, i should save a 30k there)
    Lightmap uvs got split too (that's true for sub-objects too then), so again bad packing,  plenty of ways to work around that, but  i want as little human intervention as possible :)

    Also interesting how different is the sun set as mixed baking instead of realtime GI,


    Edit3 :
    Much better, using 1k lightmap sheets .. 3 objects fill each their own (nevermind the 4th) , i'd prefer a larger 2k sheet, so it's only 1 image but that has all the limits above on how you can group and export objects.
    I wanted to have this clear, though of course, in a large game you'd probably build levels from much smaller assets in kits, but for visualization projects or anyway if you assemble a level in the 3d app it matters, not sure also how much performance really changes (4*1k vs 1*4k lightmaps ..more drawcalls )


  • Menchen
    I never catched on these kind of modular interiors; no matter how hard I tried, nothing fits properly... Im actually pretty jealous at you right now  :D
  • nizu
    Offline / Send Message
    nizu polycounter lvl 5
    Don't be,  nothing fits here too !  :D
    I mean, i find it overwhelming too ..trying and make modular sets that are anything more than boxes , and fit.
    That's why i wanted to have a try, as personal project , make the best modules i could, then see it all break, do cheap fixes and learn for the next time.. Seemed the only option :D.
    Like : the corridor wall chunks have 2 width and 2 height  variations .. when making the vaulted room  and the corners .. i realized there would be still a ton of work to make a proper modular set : like T or X junctions, all connector variants and  snap them on a grid ..  it'd take multiples of the time i spent on this.  But just adapting them quickly to 1 room isn't too bad, and i learned stuff.

    The cheapness of the way i fixed it , isn't so much that i made 'custom meshes' reusing the uvs but with a shape fitting a special case (like a wall turn)  that's good, but i'd need to organize those special copies too,   if i had to make another room, only a fraction would be copying  the base modules , the rest is a mess of  unsorted 'special ones', not on a grid.
    Also 'special' in the sense of a different shape of the mesh , so now i can't repack the uvs if i need to add a piece, and update all automatically, but at least to some degree that has to happen .. make some modules, and at some point  'lock' the uvs  and make the rest of 'derivates'.


    Meanwhile i got a lightmap packing that should be good . 1x 2k sheet, with good fill ratio.
    Again, probably not the most common case to have these big chunks of the level assembled in the 3d app rather than in editor,  if the lightmap sheet is made of dozens of small objects it'll pack fine anyway.
    but when it is few large chunks , this way isn't too bad : i've split in 4 objects of roughly the same surface area and tweaked bake res. and scales so they fill the sheet. In a full size level it could be rooms , and It could be a 3x3 grid or 8 similar sized objects  fitting 2  lightmaps .. anyway good idea to try to avoid i.e. having an object with a surface of 3x and 2 objects of 1x surface .. that's what gives terrible packing.  






  • nizu
    Offline / Send Message
    nizu polycounter lvl 5

    New floor, less busy,  made a larger, 4x floor frame.
    It's recycling textures from small frame,  but i had to break the instance to modify the frame mesh, typical issue .. making each side of this frame a separate object initially would have been a pain to manage, but if i later do this (make special modules) , i break the 'link' ..

    The smart thing i guess is not to bother, start with reasonably big chunks/modules, then keep track of new derivate parts, and if necessary to repack uvs , do it  'preserving stacked/ overlapping uvs' (Blender can't but iPackThat can) .. anyway, it's a pain to keep track of many variants,  but better than trying to work with super small chunks.
    The  'filler' tiles are made modifying slightly this substance : https://share.allegorithmic.com/libraries/2399  .. Credits to all the authors of  stuff on substance share,  i always end having to modify (in sbs, not just parameters)  to get what needed , but it's so much easy than starting from scratch or finding the right image texture.






  • ABinhoF
    Offline / Send Message
    ABinhoF polycounter lvl 5
    This is looking great man! Looking forward to seeing where it goes :)
  • nizu
    Offline / Send Message
    nizu polycounter lvl 5
    @ABinhoF :  Thanks !

    Added new ceiling, Because in sci-fi designs,  padded cloth is the new chrome.  :p
    Also this is less polies .. those frames at half size (vs floor and corridor ) were a bit too heavy.

    I wanted to test making this sort of stuff using Blender cloth sim, it  worked fine and quick, these panels are doable with simple gravity force, not sure how it'd be for  i.e. a robot limb envelope (inflating it..)  but always good to be able to do stuff (like sculpted damage)  in the main modelling app even if it's surely not Marvelous for i.e. characters clothes.

    Also placed more of the large , less busy floor panels, not sure if the corridor ceiling looks unbalanced and too busy now, of if i should put some details like tarps and cables on the floor (might be more interesting but not busier?)   

    But mostly .. i'd like to do another pass on the base wall modules textures .. if i can make it a little less painterly and more photo-real than my usual.. and try some atmosphere and dust effects.
     



Sign In or Register to comment.