btw Daz, I changed the AO method in the v3.3.0 if you want to do some tests. Now should be faster(fast means too a bit more inaccurate.. hope supersampling, blur and dilate can get rid of these small points when rays fail due to numerical imprecissions...) and allow you to use floating geometry without problems, because I am casting the AO rays from outside to inside and not inside to outside like the previous version did.
For the v3.4.0, basically I will allow to hide geometry(yes, by mesh basis), so the raytracer won't perform collisions on hidden(non-solid in technical language) meshes. No idea if this is the solution or is good but I am implementing it ( I'm stubborn! ).
Also will let you specify multiple lowpoly meshes and hide them too ( in the viewer too, not only in the raytracer ) and render-queue-batches to render multiple geometry with different ray distances ( so you won't have to re-compose the floating geometry in photoshop ).
The reload thing and alpha-sorted transparency will appear in this version too.
The v3.4.0 will be available the next week ( sorry i'm out this week for the amazing GDC2006 conference! )
Will delay ASE support for the v3.4.1 because I don't like that format too much...
If you don't have multimonitor(imagine you have only one 1024x768 TFT) and you enable the Ignore thingy will show that message I just divide by two the virtual desktop, so If you don't have almost 2x monitors in 800x600 will show that message because (1024x768)/2<(800x600) hehe
Unfortunally some drivers returns to the programmers that only one monitor is installed when 2 or 3 are really. That is because cards like the geforce just divide the framebuffer into the two monitors, so really you get only a greater desktop, but the system says you have only one monitor installed... So when you check this option I just divide by two the virtual desktop width ( or the height if use a vertical span ).
That's why I put the "experimental" thing hahahah, I CAN'T fight vs the driver! The driver LIES me! Says I have only one monitor when I have two! I h8 it! Is a pain
I heard you can set an "applicaiton profile" in the drivers too for disabling multimonitor when running xNormal too.
I have two monitors on an ati card with omega drivers. both 1280 x 1024. maybe i'll just disable my secondary before using this, for now. what's the advantage of using this on multiple monitors anyway?
Ouch! Then I think is my fault. Will test it again.
The "omega" drivers are the non-official ATI drivers, aren't them? I always install the Catalyst heheh
Well the new version I am preparing is a major major release. I think I just will the use select the video mode and window size so all those problem will be solved ( i hope! ).
Will let you too combine, hide and select the geometry you wanna process.. You will love the method, I promise.. I'm just refining the UI a few before to relese it.
Hey, I just wanted to chime in and thank you for the great, free tool. I've wanted to tackle a normal mapped character for some time now, but the complexity of the process has scared me off. This program seems to offer great results and ease of use. It's also nice to see such frequent updates. Thanks again.
Thank you so much for making this! Beats the crap out of Melody. On the art end is Daz's method the best thing we can be doing to get the least possible number of ray errors?
I'm about do download the latest version..sounds top notch Jogsy. I haven't heard mention of a cage geometry being used to limit ray length when creating the normal map, only a uniform ray distance. Apologies if this is already in, but from experience, a third bit of geometry used only for limiting rays can save a lot of headaches and cleanup.
Hmmm cage geometry... I think Melody has something like that, but never understood it.. Can you explain me a few how it works so I could implement it well pls, Cheese?
Jogshy: Cage geometry is essentially an inflated version of your low-poly mesh where the difference in depth between the cage and the low is your ray-cast distance. This allows the user to define on a per polygon(or vertex?) level the ray-cast distance.
Well put Scooby. Some programs also allow you to choose where the ray takes its sample from, based on the cage (also known as envelope). For example, Maya's normal mapper allows you to pick from inside the envelope, nearest the envelope, or outside the envelope. It can help in areas such as armpits, where a ray from the ribcage might hit the inner arm if it's too long, and sample the wrong area. It can eliminate the need to break up your model, and also helps when sampling the caps of cylinders. Poopinmymouth posted a pic of it in action somewhere on the boards. If I get a chance, I'll try to post some pics of Maya's version.
Thanks Cheese-toast. One thing I forgot to add is that the ability to manually adjust the verts of the cage, rather than just a blanket inflate/push is crucial for those tight concave areas, such as the armpit. Also, Max allows you to set your cage to a transparent shaded view so you can be certain your cage fully encapsulates your high poly source mesh. If you see your source mesh clipping through the transparent cage? Scale those verts out until I no longer does. Otherwise its a lot of trial & error, wasting a lot of time rendering.
Adds new "cages" method to measure better the ray distance ( per-vertex editable non-uniform ray distance, inner AND outter cages ), independent front/back ray distances (uniform, old method improved too), transparency in the viewer, batch rendering, hide/show meshes from raycaster/viewer, multiple meshes loading (including the highpoly in the viewer), reload models/textures, F10 key to take screenshots, extended the documentation to 80 pages, choose video mode and ignore/use multimonitor, etc etc etc...
Added/changed like 15.000 lines of code, so expect some error from my part ( that's why I keep the old version 3.3.0 in my web )... I tested it 2 days, hope all work ok...Size of the executable has grow a few too due to this...
Jogshy, if the UI is the only part of the program that's .NET dependent, would you consider scrapping it and using basic Windows GUI elements? Or are there other reasons for keeping it .NET?
Not putting it down, it's an excellent app and a wonderful contribution from you. I was just thinking there are other ways to enhance the UI without the graphical interface, and not having to download .NET adds to the user experience (at least for first time users..) Keep it up!
Yep yep, only the UI uses .NET 2.0 ( specifically Managed C++ and C# ), all the program core is written in C and C++ for portability and speed.
The only main reason to keep .NET is that using GoMono ( http://www.go-mono.com ) or dotNGU ( http://dotgnu.org/pnet.html ) I can port it very easy to Mac and Linux the future versions.... as well as maintain an insane productivity ( .NET really rocks, is easy, fast, portable, free, multiplatform and wonderful ).
The xNormal v2.0 used the MFCs/ATL and I really terminated hating it. Using it, xNormal executable occupied 9,8Mbs ( in fact xNormal has near 3,5 million of lines... appears simple but it is not at all! )...And the interface was really ugly haha!
Also wanted to experiment a few with .NET and I'm experimenting a few too with Avalon WPF ( I have an internal version of xNormal for Windows Vista and DirectX10 in progress too but I can't release it due to an NDA ) and Xbox 360 .NET SDK ( yes, unbeliable, see http://www.gamedev.net/community/forums/topic.asp?topic_id=381236 ).
I wanted to experiment a few in Java too, but unfortunally I personally don't like Java UI designers ( by concept, the pack() thing is ugly as well as the strange layouts! ) and JNI was terrible hard mixing C/C++ and Java code!
Qt was other option. Unfortunally, like I don't provide the source code for xNormal then a Qt pro license will be required ( 1k $$$ )
I could eliminate .NET and use default Win32 GDI UI but that won't reduce the software requisites... I use OpenMP for symetric parallel computing and Visual Studio 2005 DLLs, Windows Installer 3.1 and some Visual Basic classes too and Unicode Layer, so you will be really forced to install .NET 2.0 + some redists + Win2k/XP minimum... And using .NET reduces .EXE from 9,8Mb to 2,8Mb.. so it won't worth the effort. MFCs/ATL are really a PAIN ( and obsolete ) and won't let me use nice button/dialog effects like I do atm.
And yes, I know the first time you install it sux badly because it takes hours and hours downloading Microsoft things but think thats a good way too to keep your computer well updated for future programs! For example, companies like ATI are moving to .NET too ( you can't download the old control-panel drivers, only the control center drivers which are built using .NET ). Think too that Windows Vista's APIs like Avalon, Indigo, DX10/XNA, WinFX, etc are fully managed .NET... Some games are being developed using .NET engines ( see http://artificialstudios.com/features.php , this engine was recently bought by Epic Games to improve their Unreal Engine 4.0 engine .. yes I said 4.0 and not 3.0, is NOT an errata see in the bottom of the page "Reality Engine is a trademark of Epic Games, Inc. all rights reserved" ), so you will need to install the .NET now or in a very near future... So better now than after.
.NET ( and derivates like go-mono, dotGNU, Rotor ) is the future of the programming. Much for .NET. Sorry if I went too much technical but I'm a .NET maniac programmer, mwahahahaha!
Yeah I can definitely feel the love for .NET in that post. I won't question your judgement, if .NET is really is as great as you say it is then amen. Yay for forward thinking programmers!
All the desktop apps being developed here at work are .NET based, and it's bumpy setting them up on test computers but like you said it will change in the future..but for now..it's still bumpy.
Here's my install experience so far... (and I've installed 2 previous versions of xNormal successfully)
1. Prompted to download .NET 2.0. I had it before but removed it because C:\ was running low on space. Not really a problem...
2. Ran the installer from the .zip because I'm able to do this with other apps. Didn't work because it couldn't find the .msi so I unzipped the file. Not a problem either.
3. Selected the app from the Start menu. It didn't work because msvcp71.dll wasn't on my PC. Downloaded it and dropped it in windows\system.
4. Tried to run the app again but it won't start because it can't find the background music .wav. I uninstalled my sound drivers this isn't a problem either, but is the BG music really necessary to start the app?
I know I won't be able to run xNormal on my home computer because I can't get the Intel sound drivers to work..
:-( In short, I'm not able to use xNormal at all. I know my computers are weird but it would be nice to be able to run xNormal still...
You need to unzip the xNormal_3_4_0.zip and then run setup.exe ( dont execute the .msi ). Notice you need WinXP SP2/Windows2000 SP3, Win98/95 not longer supported.
Ouch! I should install the msvcp71.dll, but I forget it in the installer I think. It should come with SP2 tho perhaps. Well, will add it in the next version to prevent problems.
Yes I was thinking about the music too... In the next version I will allow to run the program without sound cards because is really a non-sense to require it for an application like this.
I'm planning a version 3.4.1 to correct minor things like these in a pair of days btw. Do you have any other bug or easy-to-do feedback while pls?
As for interface i think you should perhaps jump on QT as it is considered the best (well at least from what i hear from our programmers). Now i don't actually know why it would be the best, but when i see them working in QT designer it makes me think i could even make apps.
No lupus. The xNormal installer automatically downloads and installs all that it's needed. However, if it can't download the prerequisites ( due to a restrictive internet firewall for example ), you need to download manually this:
Visual Studio DLLs
msvcp71.dll, msvcr71.dll, msvcp80.dll, msvcr80.dll, etc... ( Try search in internet, run windows update and install service packs )
So just unzip the xNormal package and run setup.exe with an Internet connection to downloads automatically all that you need.
As recomendation just run periodically Windows Update and you will have all this and security patches, etc.
For dur:
Qt is good but I would need the pro license because xNormal is not open source atm, so it will cost me 1500$. There is a free edition, but if you see http://www.trolltech.com/products/qt/opensource.html you need to distribute your sources with it and atm I dont want that heeh
Yay, it works now! Awesome work Jogshy, this is just what I need to preview stuff
Just a minor request: would it be possible to maybe have more control over the light or possibly scale the model? Sometimes the light is pretty close to the mesh so you can only really see certain parts at a time. If another light could be added, or the ability to have the current light further from the model, that would help I think.
But that is just a minor issue for something so great and free
I've yet to get a chance to really try this out yet, hopefully will soon. I just wanted to comment on how fucking awesome it is that you're adding in all these features that people keep asking for. And at such a furious pace too.
Hey btw Earth, I love the glow effect in your Armaggedon game here http://www.boanergesstudios.com/Agdn.php ( the guys with the orange visors, scroll to bottom ) . Looks very good da game!
Is a good source of inspiration. I think I will put a glow effect too for the xNormal 3d viewer in a few for the emissive texture.
Wow, hell yeah, I'd love to see a Glow/bloom effect like that on the emissive texture! That'd be awesome
You could maybe put a little button on the side to turn the effect on or off, yeah?
Heh, your program rules, and you keep adding more... don't stop! You're a hero!
Didn't you say you're also going to be adding an HDR effect? You're NUTS!
This is already better than any normal map generater I've ever seen, and the fact that you have a built-in viewer just compounds it's sweetness. Honestly, I don't think you know just how valued you and Xnormal is, here at Polycount (or in the industry as a whole, even).
You're an amazing tool's programmer, and I can't wait to see more from ya.
Ouch!, you're right, I think already mentioned the HDR thingy. Was experimenting a few with HDR fullscreen effect but I think just for the emissive will be enough. General fullscreen HDR I think just provokes headaches + epillepsia + God I think need new glasses cuz all is blurred haha!
When I play WoW always disable the HDR glow effect because tends to blur and overbright all.. so I think just for emissive will be enough good... Or do you prefer full screen complete HDR glow effect for all? Any advantage to do full HDR and not only for emissive texture really?
Of course will allow you to enable/disable + strength/lower the effect with some control... And I promise this fx WON'T raise the requisites to run the program ( is easy to implement in fact, is just a post-process 2D screen effect, nothing complicated ).
The v3.4.2 is almost finished. Added the light "distance" slider and some minor requested corrections... In a few days will post it prolly. I again wanna thank you all the wonderful feedback!
Basically I wanna add the glow effect, some soft shadows, cubemap diffuse lighting and a new "parallax bump" effect ( like the ATI toy shop one! ) for version 3.5.0 or 3.6.0. I'm experimenting a few with new things and also preparing other surprise tools atm so I think need to do more I+D before to finish it hehe
If you wanted to view an environment model then yeah HDR would be great, and only if the effect could be adjusted, but for standalone objects, just seeing the bloom coming from the emissive textures is just right I think. Thanks again for the tool!
[ QUOTE ]
The glow effect, some shadows, cubemap diffuse lighting and a new "parallax bump" effect will be added in the v3.5.0
[/ QUOTE ]
Waoahahhaa! I can't wait!
Also I really like the Cages stuff you added! Very fast and easy to use... although here I don't seem to be able to select individual vertices? Is that because it isn't finished yet, or something wrong with me?
The visibility and multi-objects stuff is very cool too
Edit: Oh, and I just had another idea - the 3d viewer at the moment is very cool, but I think it needs a "hide lowpoly mesh" button, for previewing the highpoly file alone... at the moment if you press Show Highpoly, the low-poly mesh is still there and it gets in the way.
Actually, could it be possible to make the 3d viewer so that it will open even if you don't have a lowpoly mesh loaded? So I could just select a highpoly mesh and go straight into the 3d viewer to check that it's ok or take screenshots, before loading the lowpoly?
It's not really a big issue, I just wanted to see stuff in the 3d viewer as quickly as possible, you know, I'm an impatient artist
Umm... I don't know if a lot of people would agree with me but maybe if the RGB sliders had numbers next to them so people can get exact RGB values (or type them in)... some people might find it useful, I dunno. Maybe it'd clutter up the interface too much? I think it'd be good though.
Also, any chance of 1-bit alpha (opacity) in the 3d viewer? It has every other map type except opacity... and I think that greyscale alpha maps slow down and cause problems with normal-maps sometimes, so maybe 1-bit (black and white) opacity maps would be ok?
Also for the 3d viewer, maybe if you could add another light? At the moment with one light, then anything un-lit just goes to black, which doesn't look natural really... although I know you said cubemap diffuse lighting was coming later (and that will be awesome for realistic lighting), maybe having a 2nd controllable light source (different colour from below or behind for example) would be very cool
Edit 2: Another idea - I don't know how difficult or impossible this would be... but it would be awesome to be able to load custom .FX files (HLSL shaders) to view textures with - for example then artists could load in their own shaders to check out different effects, for example this Skin Shader by Ben Cloward...
Again it might be impossible, but it's an idea
Another thought and maybe bug - I selected 1280x1024 75Hz 6xAA for the model viewer, and it gets the right resolution and refresh rate, but there was no antialiasing... I've got a Radeon 9800 Pro, and if I turn on 6xAA manually in the ATI control panel, then it works fine, but not if I select it in xNormal options.
Also maybe you could make the AntiAliasing into a separate drop-down menu - so people can pick their resolution, then choose an AA amount below it, just so there isn't a list of about 40 options in a single menu, you know?
OK I'm gonna stop making requests now because I've probably just said enough to have you programming until 2007
And just to give you something back... here's a little test I did tonight - your program gives excellent results!
This lowpoly mesh was just a quick one, so the silhouette around the top of the head isn't very smooth. Also there are no textures other than the normalmap and AO map, the colour and specular were set using the sliders in the program
Gaaahhh! Amazing!
Question: Why is it that Jogshy can whip up something so useful and awesome in a matter of weeks/months (for FREE no less), but multi-million dollar companies cannot seem to get it right after a couple years?
I dont see why you would want 1bit alpha, standard 8 bit alphas really arent that slow with normal mapped objects, we use them all the time.... Esp when you only have one model loaded, any card that can run this program should be able to EASYILY handle that.
Oh, OK EarthQuake - I wasn't sure... I just wanted any sort of alpha and figured 1-bit would be simplest to add
Of course if it's possible to do better opacity maps, I'm totally down with that!
Well yes, obviously a choice of how to display/use the alpha map (maybe a drop-down menu) would be the best solution, but I don't wanna make even more ridiculous requests of Jogshy, he's already doing a whole lot of stuff as it is!
You can use basic alpha textures. Let me explain why I said "basic"... The v3.4.1 added alpha blending support. Just make an alpha channel in your base texture to control the opacity. If you need 1-bit alpha just load Photoshop or Gimp or whatever and play with the transparency mask until you use only 1 bit. 1-bit transparency is very good because indeed it doesn't require any sorting. The problem is that without alpha test the mipmaps will destroy your opacity mask. I think I need to add alpha test support in xNormal, yep.
Other thing to take into consideration is that I don't perform any alpha sorting atm ( independent order transparency is a very complex theme in realtime graphics ) so you might need to play a few with the cull modes to avoid sorting problems.
If you have a GeForce 7xxx, the viewer could use MTAA ( multisample transparent anti aliasing ) with the alpha-to-coverage function, which is nice for vegetation and other 1-bit alpha textured models. It also performs order independent transparency very good.
On the other hand, if you select a video mode with AA and you don't see it in the realtime viewer can be because:
1) You created a graphics driver profile with Forceware or Catalyst to disable AA? Do you have it set to "OpenGL advanced settings -> Antialiasing - Application Preference" ?
2) I use an OpenGL function called glChoosePixelFormat. Basically request the drivers to aproximately-match a video mode with the features I request... so the driver can give you a video mode CLOSE but not exact to what I requested...
Imagine... I request a 1024 x 768 x 32bbp x 75Hz x 6FSAA mode... but this mode is not supported and the drivers decides to use a 1024 x 768 x 24bpp x 60Hz x no FSAA...
Sure you don't use "Override video modes" in Catalyst drivers, I think that controls how video modes can be selected by the driver.
3) Some OpenGL drivers are just weird. To make a good OpenGL implementation can be very difficult due to the zillion extensions and functions it must implement and due to imprecission and ambiguity in some specification docs. Please sure you have the latest version installed.
4) Perhaps is a bug, yep yep! Multisample in OpenGL can be very complicated to setup because Microsoft exit the ARB and we have to do really ugly hacks to pass the obsolete-and-nevermore-updated WindowsXP OpenGL1.1 render context system
To select one vertex in the front cage check the "Edit cages" to expand the cages menus. Then check the "Show front cage"... Then check the "Edit front cage". Now click over a vertex using the MIDDLE mouse button and voila! To select / deselect multiple vertices, HOLD the shift key and select with middle mouse button ( yes I know, sounds complicated! )
See this is the aspect of vertices begin selected and extruded:
Notice you can control individually the extrussion for the selection and not only for the entire cage.
And sure, I will add a "hide lowpoly mesh" and will let you load only the highpoly mesh too in the upcoming v3.4.2, is easy
Oh btw I am working too to re-enable dual-core support ( yes in fact xNormal is generating maps at half speed on multicore machines ) and FBX importer ( still waiting Alias to solve the TIFF problem... )
Ahhh, I didn't try the middle mouse button... that works fine, it's ok
As for the AA thing, I have the Catalyst drivers set to "Application Preference" for antialiasing... and no driver profiles as far as I know... hmm. I'll check some more to make sure I'm not doing anything silly
I did a test render yesterday and got some visible seams where i have uv seams placed, also theres some noticeable seems on that example model as well. Mop: how did you get your model to render out without any seams?
Well, it does actually have seams, they're just hardly visible at all
I actually had to try really hard to get the light and camera in such a position as to make the seam obvious - from 80% of angles and lighting situations you can't even see it.
Also if you check this image I posted earlier, and compare it to the flat normal map above, you'll see that the ear UVs actually extend a little way onto the cheek, and I just can't see that seam from ANY camera angle or lighting situation.
Also this map was rendered out from xNormal at 512x512 with 4x supersampling, no postprocessing at all - it's probably the best first-time result I've seen... it took no time at all to set up the cage, and rendered pretty fast, no errors at all.
Oh btw the seams you can see in the Diablo model are because when I received the Pablo Hoyos's model had MultiSubObj/Multimaterial with 2 mirrored textures in 3DSMAX and I wanted to edit it a few to use only 1 texture... so a programmer-trying-to-do-artwork edited Pablo's graphics and destroyed a few his model mwahahah! Some day I have to reoutch well that.
I don't know very well how to get rid of the cylindrical head UV mapping seams... In almost all heads normal-mapped I've seen there is always an UV seam at the back side of the head... Usually games just put some hair or floating mesh in that part and voila, but I think there must be a way to solve it. Non-continuous UV mapped vertices are always conflictive Perhaps some selective blur, edit in photoshop with the clone stamp tool or weld/align/collapse/unify normals in those vertices will work?
Oh yeah, I'm sure I could fix it, I'm not worried about it though, your program does a very good job of not showing seams
Sometimes in 3dsmax or Maya, seams are really obvious and bad, but it's not the case with xNormal, so that's fine
I think any program or engine will show seams always unless the artist puts a lot of effort into hiding them by manually editing the normal-map ... so it's just something we can live with... especially when it's hard to see
Replies
For the v3.4.0, basically I will allow to hide geometry(yes, by mesh basis), so the raytracer won't perform collisions on hidden(non-solid in technical language) meshes. No idea if this is the solution or is good but I am implementing it ( I'm stubborn! ).
Also will let you specify multiple lowpoly meshes and hide them too ( in the viewer too, not only in the raytracer ) and render-queue-batches to render multiple geometry with different ray distances ( so you won't have to re-compose the floating geometry in photoshop ).
The reload thing and alpha-sorted transparency will appear in this version too.
The v3.4.0 will be available the next week ( sorry i'm out this week for the amazing GDC2006 conference! )
Will delay ASE support for the v3.4.1 because I don't like that format too much...
See ya soon.
Unfortunally some drivers returns to the programmers that only one monitor is installed when 2 or 3 are really. That is because cards like the geforce just divide the framebuffer into the two monitors, so really you get only a greater desktop, but the system says you have only one monitor installed... So when you check this option I just divide by two the virtual desktop width ( or the height if use a vertical span ).
That's why I put the "experimental" thing hahahah, I CAN'T fight vs the driver! The driver LIES me! Says I have only one monitor when I have two! I h8 it! Is a pain
I heard you can set an "applicaiton profile" in the drivers too for disabling multimonitor when running xNormal too.
I have two monitors on an ati card with omega drivers. both 1280 x 1024. maybe i'll just disable my secondary before using this, for now. what's the advantage of using this on multiple monitors anyway?
The "omega" drivers are the non-official ATI drivers, aren't them? I always install the Catalyst heheh
Well the new version I am preparing is a major major release. I think I just will the use select the video mode and window size so all those problem will be solved ( i hope! ).
Will let you too combine, hide and select the geometry you wanna process.. You will love the method, I promise.. I'm just refining the UI a few before to relese it.
See ya and thx for the comments!
I've found some links about it:
http://home.austin.rr.com/jimmagill/Normal%20Map%20Generation%20in%20Max%207.htm
http://www.poopinmymouth.com/tutorial/normal_workflow_2.htm
Ok, I will finish the v3.4.0 with batch support and a preliminary "cage" thing in a few. I'm too much occupied this week with the GDC2006 hehehe!
See ya, stay tuned!
Adds new "cages" method to measure better the ray distance ( per-vertex editable non-uniform ray distance, inner AND outter cages ), independent front/back ray distances (uniform, old method improved too), transparency in the viewer, batch rendering, hide/show meshes from raycaster/viewer, multiple meshes loading (including the highpoly in the viewer), reload models/textures, F10 key to take screenshots, extended the documentation to 80 pages, choose video mode and ignore/use multimonitor, etc etc etc...
Added/changed like 15.000 lines of code, so expect some error from my part ( that's why I keep the old version 3.3.0 in my web )... I tested it 2 days, hope all work ok...Size of the executable has grow a few too due to this...
As always, download at:
http://www.santyesprogramadorynografista.net/projects.aspx
http://santyhammer.blogspot.com
Hope you like it
Not putting it down, it's an excellent app and a wonderful contribution from you. I was just thinking there are other ways to enhance the UI without the graphical interface, and not having to download .NET adds to the user experience (at least for first time users..) Keep it up!
The only main reason to keep .NET is that using GoMono ( http://www.go-mono.com ) or dotNGU ( http://dotgnu.org/pnet.html ) I can port it very easy to Mac and Linux the future versions.... as well as maintain an insane productivity ( .NET really rocks, is easy, fast, portable, free, multiplatform and wonderful ).
The xNormal v2.0 used the MFCs/ATL and I really terminated hating it. Using it, xNormal executable occupied 9,8Mbs ( in fact xNormal has near 3,5 million of lines... appears simple but it is not at all! )...And the interface was really ugly haha!
Also wanted to experiment a few with .NET and I'm experimenting a few too with Avalon WPF ( I have an internal version of xNormal for Windows Vista and DirectX10 in progress too but I can't release it due to an NDA ) and Xbox 360 .NET SDK ( yes, unbeliable, see http://www.gamedev.net/community/forums/topic.asp?topic_id=381236 ).
I wanted to experiment a few in Java too, but unfortunally I personally don't like Java UI designers ( by concept, the pack() thing is ugly as well as the strange layouts! ) and JNI was terrible hard mixing C/C++ and Java code!
Qt was other option. Unfortunally, like I don't provide the source code for xNormal then a Qt pro license will be required ( 1k $$$ )
I could eliminate .NET and use default Win32 GDI UI but that won't reduce the software requisites... I use OpenMP for symetric parallel computing and Visual Studio 2005 DLLs, Windows Installer 3.1 and some Visual Basic classes too and Unicode Layer, so you will be really forced to install .NET 2.0 + some redists + Win2k/XP minimum... And using .NET reduces .EXE from 9,8Mb to 2,8Mb.. so it won't worth the effort. MFCs/ATL are really a PAIN ( and obsolete ) and won't let me use nice button/dialog effects like I do atm.
And yes, I know the first time you install it sux badly because it takes hours and hours downloading Microsoft things but think thats a good way too to keep your computer well updated for future programs! For example, companies like ATI are moving to .NET too ( you can't download the old control-panel drivers, only the control center drivers which are built using .NET ). Think too that Windows Vista's APIs like Avalon, Indigo, DX10/XNA, WinFX, etc are fully managed .NET... Some games are being developed using .NET engines ( see http://artificialstudios.com/features.php , this engine was recently bought by Epic Games to improve their Unreal Engine 4.0 engine .. yes I said 4.0 and not 3.0, is NOT an errata see in the bottom of the page "Reality Engine is a trademark of Epic Games, Inc. all rights reserved" ), so you will need to install the .NET now or in a very near future... So better now than after.
.NET ( and derivates like go-mono, dotGNU, Rotor ) is the future of the programming. Much for .NET. Sorry if I went too much technical but I'm a .NET maniac programmer, mwahahahaha!
All the desktop apps being developed here at work are .NET based, and it's bumpy setting them up on test computers but like you said it will change in the future..but for now..it's still bumpy.
Here's my install experience so far... (and I've installed 2 previous versions of xNormal successfully)
1. Prompted to download .NET 2.0. I had it before but removed it because C:\ was running low on space. Not really a problem...
2. Ran the installer from the .zip because I'm able to do this with other apps. Didn't work because it couldn't find the .msi so I unzipped the file. Not a problem either.
3. Selected the app from the Start menu. It didn't work because msvcp71.dll wasn't on my PC. Downloaded it and dropped it in windows\system.
4. Tried to run the app again but it won't start because it can't find the background music .wav. I uninstalled my sound drivers this isn't a problem either, but is the BG music really necessary to start the app?
I know I won't be able to run xNormal on my home computer because I can't get the Intel sound drivers to work..
:-( In short, I'm not able to use xNormal at all. I know my computers are weird but it would be nice to be able to run xNormal still...
Ouch! I should install the msvcp71.dll, but I forget it in the installer I think. It should come with SP2 tho perhaps. Well, will add it in the next version to prevent problems.
Yes I was thinking about the music too... In the next version I will allow to run the program without sound cards because is really a non-sense to require it for an application like this.
I'm planning a version 3.4.1 to correct minor things like these in a pair of days btw. Do you have any other bug or easy-to-do feedback while pls?
thx for all the notes.
As for interface i think you should perhaps jump on QT as it is considered the best (well at least from what i hear from our programmers). Now i don't actually know why it would be the best, but when i see them working in QT designer it makes me think i could even make apps.
Anyway great job so far.
.NET 2.0 (for x86) http://www.microsoft.com/downloads/detai...;displaylang=en
.NET 2.0 (for x64) if you run Win64 over AMD64/AI64
http://www.microsoft.com/downloads/detai...;DisplayLang=en
Windows Installer 3.1
http://www.microsoft.com/downloads/detai...;DisplayLang=en
Visual Studio DLLs
msvcp71.dll, msvcr71.dll, msvcp80.dll, msvcr80.dll, etc... ( Try search in internet, run windows update and install service packs )
So just unzip the xNormal package and run setup.exe with an Internet connection to downloads automatically all that you need.
As recomendation just run periodically Windows Update and you will have all this and security patches, etc.
For dur:
Qt is good but I would need the pro license because xNormal is not open source atm, so it will cost me 1500$. There is a free edition, but if you see http://www.trolltech.com/products/qt/opensource.html you need to distribute your sources with it and atm I dont want that heeh
I get a new error now when trying to open xNormal:
"Unexpected error initializing the OpenAL sound driver. Please sure you have a 16bits sound card installed and working!"
I have onboard sound; Soundstorm on my asus A7N8X rev 2 mobo. Not sure why sound would be a problem for xNormal though
This is a typical artist trying to run xNormal:
http://www.youtube.com/watch?v=yhoyDBd09dM
Now, seriously, xNormal v3.4.1 is out. Sound card is no longer required to run the program, solved the msvc71.dll problems and other minor things.
As usually in http://www.santyesprogramadorynografista.net/projects.aspx
If you have anymore problem you know where to find me
Just a minor request: would it be possible to maybe have more control over the light or possibly scale the model? Sometimes the light is pretty close to the mesh so you can only really see certain parts at a time. If another light could be added, or the ability to have the current light further from the model, that would help I think.
But that is just a minor issue for something so great and free
ps: Wow no comments on video... 1st time I seen it I was laughing all the day hahah!
Kinda scary kid though!
Hey btw Earth, I love the glow effect in your Armaggedon game here
http://www.boanergesstudios.com/Agdn.php ( the guys with the orange visors, scroll to bottom ) . Looks very good da game!
Is a good source of inspiration. I think I will put a glow effect too for the xNormal 3d viewer in a few for the emissive texture.
You could maybe put a little button on the side to turn the effect on or off, yeah?
Heh, your program rules, and you keep adding more... don't stop! You're a hero!
This is already better than any normal map generater I've ever seen, and the fact that you have a built-in viewer just compounds it's sweetness. Honestly, I don't think you know just how valued you and Xnormal is, here at Polycount (or in the industry as a whole, even).
You're an amazing tool's programmer, and I can't wait to see more from ya.
When I play WoW always disable the HDR glow effect because tends to blur and overbright all.. so I think just for emissive will be enough good... Or do you prefer full screen complete HDR glow effect for all? Any advantage to do full HDR and not only for emissive texture really?
Of course will allow you to enable/disable + strength/lower the effect with some control... And I promise this fx WON'T raise the requisites to run the program ( is easy to implement in fact, is just a post-process 2D screen effect, nothing complicated ).
The v3.4.2 is almost finished. Added the light "distance" slider and some minor requested corrections... In a few days will post it prolly. I again wanna thank you all the wonderful feedback!
Basically I wanna add the glow effect, some soft shadows, cubemap diffuse lighting and a new "parallax bump" effect ( like the ATI toy shop one! ) for version 3.5.0 or 3.6.0. I'm experimenting a few with new things and also preparing other surprise tools atm so I think need to do more I+D before to finish it hehe
The glow effect, some shadows, cubemap diffuse lighting and a new "parallax bump" effect will be added in the v3.5.0
[/ QUOTE ]
Waoahahhaa! I can't wait!
Also I really like the Cages stuff you added! Very fast and easy to use... although here I don't seem to be able to select individual vertices? Is that because it isn't finished yet, or something wrong with me?
The visibility and multi-objects stuff is very cool too
Edit: Oh, and I just had another idea - the 3d viewer at the moment is very cool, but I think it needs a "hide lowpoly mesh" button, for previewing the highpoly file alone... at the moment if you press Show Highpoly, the low-poly mesh is still there and it gets in the way.
Actually, could it be possible to make the 3d viewer so that it will open even if you don't have a lowpoly mesh loaded? So I could just select a highpoly mesh and go straight into the 3d viewer to check that it's ok or take screenshots, before loading the lowpoly?
It's not really a big issue, I just wanted to see stuff in the 3d viewer as quickly as possible, you know, I'm an impatient artist
Umm... I don't know if a lot of people would agree with me but maybe if the RGB sliders had numbers next to them so people can get exact RGB values (or type them in)... some people might find it useful, I dunno. Maybe it'd clutter up the interface too much? I think it'd be good though.
Also, any chance of 1-bit alpha (opacity) in the 3d viewer? It has every other map type except opacity... and I think that greyscale alpha maps slow down and cause problems with normal-maps sometimes, so maybe 1-bit (black and white) opacity maps would be ok?
Also for the 3d viewer, maybe if you could add another light? At the moment with one light, then anything un-lit just goes to black, which doesn't look natural really... although I know you said cubemap diffuse lighting was coming later (and that will be awesome for realistic lighting), maybe having a 2nd controllable light source (different colour from below or behind for example) would be very cool
Edit 2: Another idea - I don't know how difficult or impossible this would be... but it would be awesome to be able to load custom .FX files (HLSL shaders) to view textures with - for example then artists could load in their own shaders to check out different effects, for example this Skin Shader by Ben Cloward...
Again it might be impossible, but it's an idea
Another thought and maybe bug - I selected 1280x1024 75Hz 6xAA for the model viewer, and it gets the right resolution and refresh rate, but there was no antialiasing... I've got a Radeon 9800 Pro, and if I turn on 6xAA manually in the ATI control panel, then it works fine, but not if I select it in xNormal options.
Also maybe you could make the AntiAliasing into a separate drop-down menu - so people can pick their resolution, then choose an AA amount below it, just so there isn't a list of about 40 options in a single menu, you know?
OK I'm gonna stop making requests now because I've probably just said enough to have you programming until 2007
Many thanks again!
This lowpoly mesh was just a quick one, so the silhouette around the top of the head isn't very smooth. Also there are no textures other than the normalmap and AO map, the colour and specular were set using the sliders in the program
And hey - I can't see any seams
Question: Why is it that Jogshy can whip up something so useful and awesome in a matter of weeks/months (for FREE no less), but multi-million dollar companies cannot seem to get it right after a couple years?
Answer: Because he's fucking awesome!
MoP: Looks totally rad fella!
Of course if it's possible to do better opacity maps, I'm totally down with that!
Perhaps if you're previewing a model that'll use alpha test in the game?
You can use basic alpha textures. Let me explain why I said "basic"... The v3.4.1 added alpha blending support. Just make an alpha channel in your base texture to control the opacity. If you need 1-bit alpha just load Photoshop or Gimp or whatever and play with the transparency mask until you use only 1 bit. 1-bit transparency is very good because indeed it doesn't require any sorting. The problem is that without alpha test the mipmaps will destroy your opacity mask. I think I need to add alpha test support in xNormal, yep.
Other thing to take into consideration is that I don't perform any alpha sorting atm ( independent order transparency is a very complex theme in realtime graphics ) so you might need to play a few with the cull modes to avoid sorting problems.
If you have a GeForce 7xxx, the viewer could use MTAA ( multisample transparent anti aliasing ) with the alpha-to-coverage function, which is nice for vegetation and other 1-bit alpha textured models. It also performs order independent transparency very good.
On the other hand, if you select a video mode with AA and you don't see it in the realtime viewer can be because:
1) You created a graphics driver profile with Forceware or Catalyst to disable AA? Do you have it set to "OpenGL advanced settings -> Antialiasing - Application Preference" ?
2) I use an OpenGL function called glChoosePixelFormat. Basically request the drivers to aproximately-match a video mode with the features I request... so the driver can give you a video mode CLOSE but not exact to what I requested...
Imagine... I request a 1024 x 768 x 32bbp x 75Hz x 6FSAA mode... but this mode is not supported and the drivers decides to use a 1024 x 768 x 24bpp x 60Hz x no FSAA...
Sure you don't use "Override video modes" in Catalyst drivers, I think that controls how video modes can be selected by the driver.
3) Some OpenGL drivers are just weird. To make a good OpenGL implementation can be very difficult due to the zillion extensions and functions it must implement and due to imprecission and ambiguity in some specification docs. Please sure you have the latest version installed.
4) Perhaps is a bug, yep yep! Multisample in OpenGL can be very complicated to setup because Microsoft exit the ARB and we have to do really ugly hacks to pass the obsolete-and-nevermore-updated WindowsXP OpenGL1.1 render context system
To select one vertex in the front cage check the "Edit cages" to expand the cages menus. Then check the "Show front cage"... Then check the "Edit front cage". Now click over a vertex using the MIDDLE mouse button and voila! To select / deselect multiple vertices, HOLD the shift key and select with middle mouse button ( yes I know, sounds complicated! )
See this is the aspect of vertices begin selected and extruded:
Notice you can control individually the extrussion for the selection and not only for the entire cage.
And sure, I will add a "hide lowpoly mesh" and will let you load only the highpoly mesh too in the upcoming v3.4.2, is easy
Oh btw I am working too to re-enable dual-core support ( yes in fact xNormal is generating maps at half speed on multicore machines ) and FBX importer ( still waiting Alias to solve the TIFF problem... )
As for the AA thing, I have the Catalyst drivers set to "Application Preference" for antialiasing... and no driver profiles as far as I know... hmm. I'll check some more to make sure I'm not doing anything silly
I actually had to try really hard to get the light and camera in such a position as to make the seam obvious - from 80% of angles and lighting situations you can't even see it.
Also if you check this image I posted earlier, and compare it to the flat normal map above, you'll see that the ear UVs actually extend a little way onto the cheek, and I just can't see that seam from ANY camera angle or lighting situation.
Also this map was rendered out from xNormal at 512x512 with 4x supersampling, no postprocessing at all - it's probably the best first-time result I've seen... it took no time at all to set up the cage, and rendered pretty fast, no errors at all.
I don't know very well how to get rid of the cylindrical head UV mapping seams... In almost all heads normal-mapped I've seen there is always an UV seam at the back side of the head... Usually games just put some hair or floating mesh in that part and voila, but I think there must be a way to solve it. Non-continuous UV mapped vertices are always conflictive Perhaps some selective blur, edit in photoshop with the clone stamp tool or weld/align/collapse/unify normals in those vertices will work?
Sometimes in 3dsmax or Maya, seams are really obvious and bad, but it's not the case with xNormal, so that's fine
I think any program or engine will show seams always unless the artist puts a lot of effort into hiding them by manually editing the normal-map ... so it's just something we can live with... especially when it's hard to see