Hmm.. Yeah, so really, after doing alot of tests, trying diff things, the only benefit I see of using the database personally, is condensing them into 1 file, which is nice.
Otherwise, I don't really see any major speed increases vs. my original method. I guess, once they are cached they load alot faster. But otherwise, my current method is basically just as fast. But that's when I use Parrallel.Foreach in the DB method. If I don't, then it's slower than my old one. If I use the parallel method, then you don't get realtime updates right away either.
So I guess for now, I'll leave my code alone. But I will probably still look into it more and see what I can find.
mLichy: you're correct, the db isn't for speed. It's just to keep things in 1 file and to allow sorting / filtering. I could probably do the threaded thumb generation with file based thumbs too, but it might be more messy.
Right now the user can see thumbs just as they're created. I Have a UI / main thread and a couple of threads generating thumbs. In the UI thread I Have a delegate function for the widget that holds the thumbs, which gets triggered when Windows wants to repaint the window or when I tell it to trigger. What does it do? It loads all the thumb blobs (if they exist) for the thumbs visible in the window. Additionally the thumb generator threads tell the widget to repaint itself once a thumb got created. Now thumbs will show up in real time as soon as they are created
Downside: I still haven't figured out how xnView does it. xnview seems to create the thumbs which are visible in the window first (i.e. where you just scrolled to) and then continues creating thumbs for images you don't currently see. That's nifty, but I haven't figured out that algorithm yet.
Yeah, I can see why you'd want to use it. Although, since I'm using WPF, It's alot more difficult I think to get updating working properly. I'm using a Dispatcher, as it's called, to use a seperate thread to pass data back to the main view.
I'm not sure how it works in QT though. At work they use WPF for a shader browser I believe, and it just loads in empty containers for the shaders, and says updating as u see them, and loads a thumb preview in.
I was looking at Picasa, they did some good things with that too. It uses very low memory, but runs smooth and loads stuff in the background as you browse as well.
A few weeks ago I was working on a "double tap" script for max. It is a way to reuse keybinds, press the key once one thing happens, press it again quickly within a narrow window of time and it triggers something else. But I hit a snag with tracking time, but the guys over at TechArtist.org and their knowledge of some undocumented maxscript "timestamp()" got it working great, so I release it into the wild! Be FREE!
Here is one example that toggles the move gizmo between local and view if double tapped and if single tapped just activates the move gizmo leaving the reference coordinate system as it was previously set. As an animator I'm constantly cycling between local pivot to rotate and view pivot to move.
The script:http://dl.dropbox.com/u/2336353/VigTools-ToggleMove.ms To install: Run the script once from anywhere. Use Customize > UI to assign it to a key. Use: Feel free to slice this up any way you need it to fit your needs.
This is a little late but HOLY CRAP this is awesome! It made my eyes go crossed.
I'm not sure how it works in QT though. At work they use WPF for a shader browser I believe, and it just loads in empty containers for the shaders, and says updating as u see them, and loads a thumb preview in.
that's sort of what I have now. Except the thumbs start showing up at the top of the browser and if you scroll all the way down to the last image, you have to wait till it creates thumbs for everything else.
Guess it's not really that important for the browser, it's just a thing that bugs me because I want to know how it's down
I could do a similar thing, using Visualizing. Or, I think I can also set the bitmaps to delayCreation, which I believe doesn't load them until you can see it.
However, that mode won't work for what I want, since I need to be able to update the bitmap in realtime based on if the user saves the original or not and show the result in my UI. If I set anything but ignoreCache for the bitmap create option, it won't get updated.
But, if I used the DB method, then it would be a different story.
I found this other viewer someone made, which is interesting, and can be fast. But it's pretty basic as it stands.
the thing that's the slowest for me is resizing the thumbs (db access is blazingly fast, I dont worry about this), especially photos which come in huge sizes - I think Qt's nice option for resizing is Bicubic. Nearest-neighbour is as ugly as it's fast though, but I really don't want that
I guess I might have to look for different options at some point. How is the FreeImage library working for you?
FreeImage is great imo. Works fast overall I feel. It also supports all the image formats I wanted in 1 package. Plus makes it easy to get an Alpha Channel Bitmap, or modify the bitmaps Hue/Saturation/Ect easily enough.
He's still working on it and improving it, so that's awesome. I did run into issues here and there with PSD files, so I sent him one and am hoping he can figure out why they don't want to load properly.
If people didn't know/see already, I've updated my bitmapResourcer again the other day. It should now be maybe as fast as it originally was, but without memory issues. I also fixed some other small bugs.
Also, testing right now, I currently have 900 images loaded out of almost 3000, and it's going fine.
added a video tutorial on the flickr Tool in shoebox, it shows how it can use the system clipboard to paste bitmaps online (which I use every day at work with private url's set in the settings).
EmAr: That is really cool, it's just a shame that the models won't light accordingly, which kind of limits the usefulness of dx9 deformation, amirite?
Thank you
Yes, this method is limited to modifiying positions and not vertex normals. Material Editor doesn't allow working with world normals in chains which connect to pixel shader inputs. Does anyone know whether this has something to do with deferred rendering?
Since flowmap generation tools are popular these days, I decided to have a crack at it myself. This is what I got so far, going for a procedural approach:
[ame="http://www.youtube.com/watch?v=ubdrnUu8Xqo"]Flowmap painter - YouTube[/ame]
havardsc:
awesome work. Now if we could just get a nice maya flow map tool going we'd be set! I swear i'm about to jump ship any day now with max having all the cool stuff
It's not necessarily max based, but I coupled it with it so I could send "intersection"(?) maps through to it quickly. It is .Net based, so if you are a windows user it would work fine with maya too.
crosspost spamming here from my own thread, i've just uploaded my flow map painting script, updated with the plugin finally included, and the performance problems should have been resolved.
also, the color values are still a little off, I am aware of that, and i'm working on it for now please refer to the help file that i have included to know how to work around the kinks in the script.
note on the image: i have cheated here and manually applied the painted bitmap to the mesh, but other than that it's exactly like the script created it.
nice project akram, you might be interested in 3d importer library with a focus on game formats http://assimp.sourceforge.net/ also comes with python bindings
I've been playing around some more with WorldPositionOffset in UDK. I'm using a technique similar to the one used this in order to store multiple sub-pivot points as vertex color data to be able to rotate multiple sub-elements in a staticmesh. But I'm writing my own tools in 3dsmax to assign these pivot points.
In this example I'm using a single 350tri mesh instanced 8 times. In total those are 512 elements rotating.
how do you drive the animation in udk and what is the performence like? looks cool!
The "RotateAboutAxis" let's you specify the angle, in radians, of the rotation. In the example I'm using "sin" in order to make a full rotation and then go back.
The offset between the different sub-elements is affected by the vertex color alpha channel as well. This way certain planks will rotate before others do.
In order to achieve the offset between actors you need material instances with a slight offset to the "Time" node.
Performance is perfect, since this is still a staticmesh with lightmaps and all. And the animation is done in the vertex shader.
We would love some help adding content, like links or code samples or whatever you think that you and others would find helpful.
Talking with Rob and others over at Tech-Artists.Org, they're interested in moving content from their defunct wiki into the PC wiki. This will probably happen at a later date, once they resurrect it. Then we can start parsing it from MediaWiki syntax to MoinMoin syntax.
I would really love it if someone could help with that translation, it seems like it could be a fairly obvious scriptable project (if a parser doesn't exist already).
Rob shocked the TA wiki into consciousness! There's a lot of great stuff over there. However they have no desire to keep it going, other than to give it a rebirth over here on our wiki.
I found some parsers, but they'll need some loving. It's quite a bit beyond my skills. Any help would be much appreciated!
part of ShoeBox, I am researching right now some alpha masking tool that tries to extract a straight alpha source (RGBA) out of a matted or flat (RGB) image. It works by etheir providing a 2nd image without the object you want to extract or estimating the background e.g a solid or even background color.
Right now I am adding a palette detection (see color buckets) which might help me enhance certain alpha channel's more than others. Also on a second pass and I want to extract the background pre-multiplied alpha color and convert them to straight alphas.
All it takes right now is a copy image to clipboard (e.g from a browser) and click on the tool.
render - that looks great! one problem i see though is the truck in the last image. parts of his decal are getting cut away as well. it would be great if the tool either tries to figure out the outline of an object it self or grants user authorization to spare the parts inside of an object.
Update for my bending material in UDK. It can bend in any vertical plane now. I'll try to animate grass/vegetation next. I hope I can get away with the static normals.
I've been working on a game for WP7. Custom physics, custom AI, custom (dynamic for actors) lighting, custom particle emitters drawn via a billboard system built on top of SpriteBatch, 3D spatial audio (own implementation as the supplied 3D spatial audio "system" is unsatisfactory) and of course custom models and textures. All made using free software (Blender/PSP4/P.Net)
My new maxscript tool : a level builder inspired by starcraft editor. Very easy to use for level-designers and environment artists.
[ame="http://www.youtube.com/watch?v=gg9T-Tp-oFE"]New MaxScript tool : Starcraft Editor in 3dsmax - YouTube[/ame]
Working on some face tracking and Candide3 model parsing in unity3D
I am trying to use the new Kinect SDK from Microsoft with the Windows Kinect device (got one at work) to track faces inside unity3D.
Candide is a standard for tracking complex face properties without transferring or computing to many complex values. So you don't get the Mesh transferred although you need it in the end, instead its kind of like morphing targets.
We got a C++ program already doing this:
Currently me and a friend are writing a C++ plugin for Unity3D to transfer the facial state(s). Will post some updates here once we get more than just numbers passing through.
Some really awesome stuff going on in this thread! Figured I'd share a bit as well.
Ive been working casually on this for a while now, but not much recently. It's a simple weapon generator for UDK. Some fellow classmates of mine wanted the ability to get weapons they modeled into UDK and for them to work. With this they just need to make the package and fill in the fields. This then spits out all the required scripts needed to have their weapon in game as a pickup.
Still pretty early in its creation, recently went back and took a look at it and there is a lot of cleaning up I need to do but for now it works and gets the job done haha. Ill post some pics below of what it looks like.
Replies
Otherwise, I don't really see any major speed increases vs. my original method. I guess, once they are cached they load alot faster. But otherwise, my current method is basically just as fast. But that's when I use Parrallel.Foreach in the DB method. If I don't, then it's slower than my old one. If I use the parallel method, then you don't get realtime updates right away either.
So I guess for now, I'll leave my code alone. But I will probably still look into it more and see what I can find.
Thread : http://www.polycount.com/forum/showthread.php?t=92535
Right now the user can see thumbs just as they're created. I Have a UI / main thread and a couple of threads generating thumbs. In the UI thread I Have a delegate function for the widget that holds the thumbs, which gets triggered when Windows wants to repaint the window or when I tell it to trigger. What does it do? It loads all the thumb blobs (if they exist) for the thumbs visible in the window. Additionally the thumb generator threads tell the widget to repaint itself once a thumb got created. Now thumbs will show up in real time as soon as they are created
Downside: I still haven't figured out how xnView does it. xnview seems to create the thumbs which are visible in the window first (i.e. where you just scrolled to) and then continues creating thumbs for images you don't currently see. That's nifty, but I haven't figured out that algorithm yet.
I'm not sure how it works in QT though. At work they use WPF for a shader browser I believe, and it just loads in empty containers for the shaders, and says updating as u see them, and loads a thumb preview in.
I was looking at Picasa, they did some good things with that too. It uses very low memory, but runs smooth and loads stuff in the background as you browse as well.
[ame="http://www.youtube.com/watch?v=e6cRdnv2Ln0"]Bending material in UDK Material Editor - YouTube[/ame]
Do you think a tutorial about this would be helpful for someone?
This is a little late but HOLY CRAP this is awesome! It made my eyes go crossed.
that's sort of what I have now. Except the thumbs start showing up at the top of the browser and if you scroll all the way down to the last image, you have to wait till it creates thumbs for everything else.
Guess it's not really that important for the browser, it's just a thing that bugs me because I want to know how it's down
However, that mode won't work for what I want, since I need to be able to update the bitmap in realtime based on if the user saves the original or not and show the result in my UI. If I set anything but ignoreCache for the bitmap create option, it won't get updated.
But, if I used the DB method, then it would be a different story.
I found this other viewer someone made, which is interesting, and can be fast. But it's pretty basic as it stands.
http://slouge.wordpress.com/2009/10/28/wpf-fast-thumbnails-image-generation-rotation/
the thing that's the slowest for me is resizing the thumbs (db access is blazingly fast, I dont worry about this), especially photos which come in huge sizes - I think Qt's nice option for resizing is Bicubic. Nearest-neighbour is as ugly as it's fast though, but I really don't want that
I guess I might have to look for different options at some point. How is the FreeImage library working for you?
He's still working on it and improving it, so that's awesome. I did run into issues here and there with PSD files, so I sent him one and am hoping he can figure out why they don't want to load properly.
Also, testing right now, I currently have 900 images loaded out of almost 3000, and it's going fine.
[ame="http://www.youtube.com/watch?v=2Df6WAJbxPY"]ShoeBox: Flickr tool - YouTube[/ame]
Another video shows how to create a bitmap font with ShoeBox and Photohop
[ame="http://www.youtube.com/watch?v=Arzk8h4lc1I"]ShoeBox: Create Bitmap Fonts - YouTube[/ame]
I'll be adding more videos in the next few days
[ame="http://www.youtube.com/watch?v=GaCqYJmBiXk"]UDK Bend and Twist materials in dx9 mode - YouTube[/ame]
Dude that is awesome! Love it so much! Just made a lovely font and got it all working in unity with Ngui in no time at all
Thank you
Yes, this method is limited to modifiying positions and not vertex normals. Material Editor doesn't allow working with world normals in chains which connect to pixel shader inputs. Does anyone know whether this has something to do with deferred rendering?
[ame="http://www.youtube.com/watch?v=ubdrnUu8Xqo"]Flowmap painter - YouTube[/ame]
awesome work. Now if we could just get a nice maya flow map tool going we'd be set! I swear i'm about to jump ship any day now with max having all the cool stuff
http://www.scriptspot.com/3ds-max/scripts/flow-map-painter
please download and test
also, the color values are still a little off, I am aware of that, and i'm working on it for now please refer to the help file that i have included to know how to work around the kinks in the script.
note on the image: i have cheated here and manually applied the painted bitmap to the mesh, but other than that it's exactly like the script created it.
video incoming this weekend working on freelance stuff at the moment, don't really have the time i'm afraid
http://www.the-area.com/blogs/chris/3ds-max-2013-net-sdk-and-the-maxsharp-source-code
More info here..
In this example I'm using a single 350tri mesh instanced 8 times. In total those are 512 elements rotating.
[ame="http://www.youtube.com/watch?v=xfiFQ8dOo5Y"]http://www.youtube.com/watch?v=xfiFQ8dOo5Y[/ame]
The "RotateAboutAxis" let's you specify the angle, in radians, of the rotation. In the example I'm using "sin" in order to make a full rotation and then go back.
The offset between the different sub-elements is affected by the vertex color alpha channel as well. This way certain planks will rotate before others do.
In order to achieve the offset between actors you need material instances with a slight offset to the "Time" node.
Performance is perfect, since this is still a staticmesh with lightmaps and all. And the animation is done in the vertex shader.
http://wiki.polycount.com/CategoryTechnicalArt
We would love some help adding content, like links or code samples or whatever you think that you and others would find helpful.
Talking with Rob and others over at Tech-Artists.Org, they're interested in moving content from their defunct wiki into the PC wiki. This will probably happen at a later date, once they resurrect it. Then we can start parsing it from MediaWiki syntax to MoinMoin syntax.
I would really love it if someone could help with that translation, it seems like it could be a fairly obvious scriptable project (if a parser doesn't exist already).
Anyhow, let me know if you would like to contribute.
http://wiki.polycount.com/HowToContribute
I found some parsers, but they'll need some loving. It's quite a bit beyond my skills. Any help would be much appreciated!
Right now I am adding a palette detection (see color buckets) which might help me enhance certain alpha channel's more than others. Also on a second pass and I want to extract the background pre-multiplied alpha color and convert them to straight alphas.
All it takes right now is a copy image to clipboard (e.g from a browser) and click on the tool.
edit:
some older results from a previous build
That could have come in handy so many times in my life!
http://developer.download.nvidia.com/GTC/PDF/GTC2012/PresentationPDF/S0052-GTC2012-Image-Video-Segmentation.pdf
[ame="http://www.youtube.com/watch?v=TcZwzODKe_0"]UDK Bending material updated! - YouTube[/ame]
I've been working on a game for WP7. Custom physics, custom AI, custom (dynamic for actors) lighting, custom particle emitters drawn via a billboard system built on top of SpriteBatch, 3D spatial audio (own implementation as the supplied 3D spatial audio "system" is unsatisfactory) and of course custom models and textures. All made using free software (Blender/PSP4/P.Net)
[ame="http://www.youtube.com/watch?v=gg9T-Tp-oFE"]New MaxScript tool : Starcraft Editor in 3dsmax - YouTube[/ame]
Woo! You're the best! Thanks again, Prolow
discuss it here:
http://www.polycount.com/forum/showthread.php?t=97215&page=4
and download it here:
http://www.scriptspot.com/3ds-max/scripts/flow-map-painter
[vv]44648007[/vv]
I am trying to use the new Kinect SDK from Microsoft with the Windows Kinect device (got one at work) to track faces inside unity3D.
Candide is a standard for tracking complex face properties without transferring or computing to many complex values. So you don't get the Mesh transferred although you need it in the end, instead its kind of like morphing targets.
We got a C++ program already doing this:
Currently me and a friend are writing a C++ plugin for Unity3D to transfer the facial state(s). Will post some updates here once we get more than just numbers passing through.
Ive been working casually on this for a while now, but not much recently. It's a simple weapon generator for UDK. Some fellow classmates of mine wanted the ability to get weapons they modeled into UDK and for them to work. With this they just need to make the package and fill in the fields. This then spits out all the required scripts needed to have their weapon in game as a pickup.
Still pretty early in its creation, recently went back and took a look at it and there is a lot of cleaning up I need to do but for now it works and gets the job done haha. Ill post some pics below of what it looks like.