1. #1
    Senior Member User Gallery
    Join Date
    Apr 2010
    Location
    Des Moines, IA
    Posts
    304

    Smile Dear Dr. Petter and Pixologic

    Hello Dr. Peter and Pixologic (and Taron ), Let me start by saying that i'm a big fan of both Sculptris & Zbrush (as you probably already know). I've been hearing a lot of people talk about Sculptris as a sort of beginners tool. While it definatly is easy for beginners, and it's currently limited in certain areas, I believe it's potential is greater than Zbrush.

    Now, let me say that there is definatly a need for both dynamic tessalation (for rapid creative shape building), and unified-area "leveled" geometry sculpting, like Zbrush (for high quality details and paint). No amount of bump/texture mapping will match the quality of micro-vertex detail. But while Zbrush's remesh/project features are great for simpler models (like heads), it cannot capture tightly spaced appendages (like the fingers of a hand, or arm pits). So getting Sculptris models into Zbrush can be, at times, a slow and tricky process (not artistic).

    Origianlly, as a software developer myself, I began making a simple-ish skinning app to adress this. Where it would analyze surface density and use a voxel tree to accuratly remesh into Zbrush friendly quad geometry, but then I got the best idea. What if, instead of converting triangles to evenly spaced quads, you just evenly space exsiting triangles and use triangle friendly tools. Here's what I mean:

    Sculptris-Polypaint-Diagram.jpg

    That's the basic concept; it's simple and that's the beauty of it. There are two methods i've thought of:

    1. Unify the mesh and use that as a "level one" geomerty. All subdivisions after that are uniform.
    2. Each division level is a variable amount (per triangle), based on the parent triangle's surface area. Each division level unifies density, so any mesh warping gets accomedated for in the lower subdivision.

    What you'd end up with is a polypaintable mesh that can losslessly capture details of a dynamicly changing parent mesh (at least where the mesh remains fixed). This method could be applied to any mesh regardless of topology, all polygons would be triangulated (vertices would be one-to-one with normals).

    Idealy, vertices could store multi channel information, like: Location, color, specular, materials, custom, etc.. and each channel(s) could be locked for manipulation, e.g., you could lay down surface deformation, color, and glow at the same time.
    There is a range of good ideas that i've thought of to accompany this, like extracting existing "detail" to levels, but i won't bore you with the details.


    One thing I do want to bring up however, another key reason Sculptris has such a bright future, is that because of it's ability to work with triangles, it opens the door for things like "true" clipping brushes & boolean operations. Where the geometry actually get's cliped instead of flattend, and holes could be cut at random. And any Z4 user will tell you how vital the clipping brushes are for hard surface modeling.


    So in closing of this lengthy post of mine, please understand that this is in no way a feature request, or anything like that. I'm simply sharing what I believe to be a very good idea (in case you haven't already thought of it ).

    Whatever it holds, I look forward to the future of Pixologic.


    ---


    Taron, the reason I included you is because i was originally developing this micro-painting app as a stand alone software that could work on any .obj, see here she is in the womb, analyzing surface density:
    Screenshot.jpg
    but i simply don't have the time to start another project, and my programer friends arn't artist and could care less. But i kept thinking how great your MaCrea tool would be inside such an application (and how good a selling factor). It's been years since I've written anything with OpenGL (i use Direct3D), but if you where ever interested in developing an application like this, then i would be very willing to allocated some time to help. Just send me a PM, and no pressure at all just thought i'd make the offer.
    Last edited by F i L; 08-19-10 at 08:32 PM.

  2. #2
    Senior Member User Gallery
    Join Date
    Aug 2010
    Location
    Renfrew Ontario Canada
    Age
    56
    Posts
    247

    Default Wow!

    Its times like this that I wish I could go back to school. But what the heck I retire in seven years and I could take this kind of stuff up purely for the love of it. By then I'm sure Sculptris will be a fully featured app or maybe part of a suite of blended apps.

    Keep thinking dude!

  3. #3
    "I'm not a doctor!" User Gallery
    Join Date
    Jul 2010
    Location
    Sweden
    Age
    30
    Posts
    74

    Default

    Actually Sculptris started out with something similar to this idea even before it did any sculpting, though it wasn't quite the same thing. Vertex painting with a dynamically tesselated canvas. There's a video - http://www.youtube.com/watch?v=TRzgL4ZGhoU

    Of course, useful vertex/triangle painting for detailed texture work requires significantly higher performance than what's currently available in Sculptris, so optimization would be a prerequisite.

    Always fun to see a fellow programmer though. Seems like this subforum is already blessed with an unexpected number of them

  4. #4
    Senior Member User Gallery
    Join Date
    Apr 2010
    Location
    Des Moines, IA
    Posts
    304

    Default

    Interesting, looks like your tessellation algorithm has significantly improved since then . Though, just to be clear, i was suggesting that at some point the geometry would become fixed, or at least fixed until the active sub division level was "refreshed". (please ignore me if you already knew that)

    I believe i understand your performance concerns though. I'm assuming you're streaming position updates to a dynamic vertex buffer in video memory; so updating a large number of vertices would bottle neck at the bus and cause serious lag... the answer is storing geometry data in textures? lol, i'll leave you alone to figure it out

    not trying to bug you, like you said, it's always fun to see other programmers.

  5. #5
    "I'm not a doctor!" User Gallery
    Join Date
    Jul 2010
    Location
    Sweden
    Age
    30
    Posts
    74

    Default

    Yes, I get what you're saying. Just figured it was a fun coincidence that I actually had "polypainting" on triangles at one point

    Of course data updates are less demanding once the topology is fixed, so that would help make things easier and faster. You should already be able to see that if you set detail to zero in Sculptris, and possibly also disable beautify. There are other aspects that impact performance more significantly though, so there's no dramatic speed-up. On a system with decent graphics card, the current bottlenecks are in software algorithms.

    Even with vertex/texture painting, it would be nice to maintain a way to get dynamic or at least varying detail levels between different areas, to avoid wasting resources. Splitting down to equal edge length everywhere seems a bit inefficient, though it's a similar issue to having uniform UV/texel coverage vs a tailored stretched mapping.

  6. #6
    Senior Member User Gallery
    Join Date
    Apr 2010
    Location
    Des Moines, IA
    Posts
    304

    Default

    i think memory issues could be addressed with say, the ability to lock polygons to specific sub-d levels, or something like that. So you could just mask off areas that that don't need to be divided. Though idk if that would slow anything down with the brush update code.


    i've been trying to crack the geometry-in-texture-format problem ever since I.d. software came out with their mega-texture system. It would be amazing (for artists & gamers) if all geometry/texture could be stored in a streamable, GPU friendly format. i know it's possible with technologies like OpenCL, but that would restrict an application to the newest cards, which isn't really a realistic option.

    I think there may be a way to do it with a pre-tessellated patch(s), that gets instanced for every polygon (or polygon groups) on screen. But then you're running into shader constant limitations/slowdowns.


    anyways, thanks for the responses it is cool to see older versions of Sculptris tech, just to see how it's evolved since then.
    Last edited by F i L; 08-20-10 at 07:25 AM.

  7. #7
    Senior Member User Gallery
    Join Date
    Jul 2010
    Location
    England
    Age
    46
    Posts
    570

    Default Weird Incantations

    What black magic is this?! What strange language do you people speak? This secret society of 'programmers' you talk of can bring no good. Your riddles and incantations are portends of darkness. I prithee, turn to the light Sirs before it is too late.
    Last edited by dreamz; 08-20-10 at 09:22 PM.

  8. #8
    Senior Member User Gallery
    Join Date
    Aug 2010
    Location
    Renfrew Ontario Canada
    Age
    56
    Posts
    247

    Default Hey

    dreamz isn't that a direct quote from Aladdin?

  9. #9
    Senior Member User Gallery
    Join Date
    Jul 2010
    Location
    England
    Age
    46
    Posts
    570

    Default

    That's my cue for a song. 'A Whole New Worrrrrrrld!' (Is that even from Aladdin?) Anyway, can I have some privacy here while I rub my...lamp.

  10. #10
    Senior Member User Gallery
    Join Date
    May 2004
    Location
    Croatia
    Age
    40
    Posts
    301

    Default

    Dreamz, one post up I was gonna say that I'm with ya, but now...

    I don't know how much it's appreciated to discuss technology all too much in a public forum, but since you've started it, hehe. During beta times we talked about something that touches upon what you're asking for. We were talking about ways to harmonize the geometry, which Tomas realized quite beautifully with his overall polygon reduction tool. In the spirit of your request, subdivision became interesting mainly due to the idea of being able to push around geometry in paint mode, when UVs have to be fixed and no more tessilation can happen. However, it wasn't so much about an evenly spaced dynamic subdivision all over the mesh, based on individual triangles sizes with the goal to have a paint resolution size geometry for polypainting. But that's a good one, too!

    If you're thinking about elegant solutions, however, you have to get away a little from brute force approaches altogether.

    Zbrush is a beautiful example for that, actually, as it appears to do what I would've tried, but I don't know what's truely under the hood or not. I would've tried to project polygon IDs (and/or UV locations, actually) to the screen as 2d reference array together with or rather underneath the "rendered" image, of course. As you paint on that 2d image, it would project your result to the respective IDs under the pixels...that's all. I havn't tried it yet, but was thinking about it, just to see if that's a quick solution or not.
    Frankly, however, I really don't like talking about this kind of stuff before I've tried it, as it can easily be a silly waste of time and I love to know that I'm only wasting my own time, haha. But that's really just me, I don't mean that in regards to exchanging thought altogether, of course. Not to mention the highly likely redundance of such thoughts as they could end up being more like mildly ignorant speculations in my case, haha, doh. The curse of not knowing enough. Well, we're just having some fun, right?

    Polypaint can only than become interesting, if you can reach such a solution, though, that makes 20million polygons no problem to work with.

    Sculptris could use a few things to really show what it could do. It's not always easy to say what has to come first in terms of improvements, though. It's definitely good to see more thoughts to consider, at least that's how I'd feel, I think. Unless I already had my "perfect" plan, of course, haha! I never really have that, though...
    Last edited by Taron; 08-20-10 at 11:29 PM.

  11. #11
    "I'm not a doctor!" User Gallery
    Join Date
    Jul 2010
    Location
    Sweden
    Age
    30
    Posts
    74

    Default

    Mm. It's funny. Sometimes optimization is premature and inhibiting, sometimes it's enabling.

  12. #12
    Senior Member User Gallery
    Join Date
    May 2004
    Location
    Croatia
    Age
    40
    Posts
    301

    Default

    Grrrr...does that mean I'm coming back too late to change my text?

    Thank god I'm not easily embarressed, because I've reached a certain contentment with my degree of stupidity. THAT'S really enabling!

    I really have to start playing with that sort of stuff. It sounds like some very interesting stuff. I have no idea what's really the best solution to interact with a geometry on vertex level. I just thought of my naive thought up there and wondered, if you can't show every visible vertex ID on its own pixel, like when you scaled down the model or zoomed, would it make any sense to stack IDs behind a pixel, or would you want to pick an internal layer with the geomtry projected at a size where all visible IDs can have their own pixel and then.... etc,etc,etc... It's as if I went through the whole process of having a dumb idea and then get to figure out just how dumb it was.
    It's all very fascinating on many levels, hehe.

  13. #13
    Senior Member User Gallery
    Join Date
    Apr 2010
    Location
    Des Moines, IA
    Posts
    304

    Default

    Quote Originally Posted by Taron
    I don't know how much it's appreciated to discuss technology all too much in a public forum, but since you've started it, hehe.
    yeah it felt weird starting a technical thread in an art forum. I was gonna PM this to you, then to Dr. Petter, but i thought it'd be easier to put it in a place where both of you (and any other lurking programmers) could read it. My intentions have always been to share my thoughts and opinions in a constructive manor. Honestly i just enjoy talking about this stuff, and meeting other programmer-artists is pretty cool. If this thread is bothering anyone and gets taken down, my feeling won't be hurt, lol.

    Thanks for the insight into the beta period, btw. Looks like my ideas had already been considered .

    about your idea - i think it's pretty clear, like you pointed out, that Zbrush renders [at least] an underlining normals/distance buffer (only when the camera stops) that gets used for brush orientation/position. My brother used that technique in his 3d medical annotation software (which i had a hand in).
    Problem is polygon occlusion, like you said. If you're painting to textures, a solution is to render the geometry to it's UV coords in the paint texture. You compare the geometry's screen/world-space locations with the brush location & size to determine which pixels actually get rendered to the texture. I know there are ways to optimize which polygons need to render, but i'm unaware of them.

    I'm with you on not talking the talk before walking the walk and i doubt i would have made this post to begin with if i actually had time to experiment more myself .
    Last edited by F i L; 08-21-10 at 12:59 PM.

  14. #14
    Senior Member User Gallery
    Join Date
    Mar 2009
    Location
    within US borders
    Posts
    499

    Default

    Phoenix Wright, you've done it again! You've turned the court around on it's head!
    "Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius — and a lot of courage to move in the opposite direction." -E.F. Schumacher


  15. #15
    Senior Member User Gallery
    Join Date
    Feb 2002
    Location
    France
    Posts
    14,115

    Smile Why not...

    yeah it felt weird starting a technical thread in an art forum
    ... it's in vertical confrontations that ideas can grows up!

    PS And Pixolator is not also an artist?
    And seems Dr Petter also
    Always "head and legs", mouse and brain
    Last edited by Frenchy Pilou; 08-21-10 at 02:47 PM.
    Is beautiful that please without concept! ( Me and maybe also E Kant)
    Pilou's Galerie Pilou's Tips Tuts Page
    Cameyo's ZPlace Art Surfing Albums
    Dedicaces Perpetual Challenges

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
  •