Virtools

Anything related to the authoring system Virtools DEV from Virtools (http://www.virtools.com).

Friday I was composing some object shaders and integrated them into the project. At some point we realized that under-water objects where reflected as they were above the water although I was using clipping panes. I thought I screwed up something but an idea made me check everything without the shaders and I found the trouble maker: the default shader of virtools is setting ClipPlaneEnable to zero! 

🙁

After the initial shock, I thought: interesting, can it entirely be setup and used inside the HLSL technique definitions? Soon I dropped that idea, because I would have to do technique-switching and that requires manual bookkeeping as Virtools offers no help with that. So how could I get back my correct reflections?

I thought about an old workaround I did somewhen in end 2006 or early 2007 but for this scenario it wouldn't work. This time I really would need some kind of "texkill" instruction that I did not found back then. And you know what? The HLSL counterpart is

Clip(x)

Probably you all already know about that, but for me it's my new best "HLSL  friend"! 🙂

All fine now 8)

(Btw. in regards to the default shader, it might be a better idea to omit that state overwrite. Don't know how this is helpful in the way it is right now. )

Well, as usual, this is a quite busy time for me therefore it took a bit longer but here we go:

Download Dom's Interface PlugIns for 3DVIA Virtools

The Zip file currently includes builds for 3.5, 4.0 and 4.1. So what's new beside some bug-fixes?

HTMLView has 3 new commands that allows to put text into the clipboard of windows. With Patrick (aka Hightree) we had, some years ago, the idea to somehow unify shader codes for that sharing and mixing would be easier. Maybe some of you remember suggestions we also put on the forum about having some kind of shader-fragments library built into the editor or having tools that convert a standard material to a shader (like 3ds max is able to do). We also suggested node-based shader authoring like one can now experience in ShaderFx, MentalMill or the Unreal Engine. Unfortunately I wasn't able to focus on shaders and only from time to time I deal with them. I have a little lib of shaders from past projects but nothing is unified. Mixing, reusing is not effective. Patrick recently referred to an article how one could split up things in separate files. I wasn't aware that HLSL function get inlined, so this approach is indeed interesting!
Anyways, having HLSL fragments ready to use might help too and now HTMLView can be used for this task. You can setup a special HTML page that contain your HLSL fragments. By clicking links you either set the complete clipboard text or you add text to the one of the clipboard. So, not only you can have a place for a code skelett but also mix fragments within a few clicks.

I have no idea if this is really works well – as setting up the HTML page takes some time etc – but it's there, you can give it a try! The commands are

SetClipboardText, AddClipboardText, ClearClipboard

Unfortunately you have to use \t and \n for indicating tabs and newlines inside your fragments. There is also a new button which opens a file named "HTMLViewShaders.html" from the Virtools root directory. You can use that as your code fragment repository. There is already a file for demo purpose but this isn't how you should do it. That page mainly contain one-liners and I don't think this is how to do it. Better would be to mix code blocks instead of one-liners.

Shader page button

Additional information about how to setup commands can be found in the HTMLView.html page. Briefly, here is how a simple link command can look like:

 dev://AddClipboardText#float4 MatDiffuse : DIFFUSE;\n

In case you are teaching or doing some kind of presentations, you can use these commands to have i.e. VSL code much quicker available for pasting. It takes less space on the page as the code is hidden behind a link and no longer needs to be displayed entirely or be in IFrames.

Code Fragments behind links

Yesterday I wrote a new little helper that I included in these builds, too. Fast Cam Switcher is actually doing something that was already possible via HTMLView and it's 'activateCam' commands. When I have to switch a lot between camera views, I really don't enjoy using that drop down list from the 3DLayout. With this new little floating dialog, you can assemble a little list of your favorite cameras quickly. By clicking on (and releasing) any of the names, the view is activated. This is much faster – it only saves a few clicks but I think it does matter. Each click matters! Hehehe …

😉

Fast Cam Switcher

I am trying to catch events like RESET in order to check for deleted objects, but I noticed that it doesn't work very well, yet. So please be careful if you use any dynamic objects in any of my tools. In some cases there is a refresh button that helps.

Enjoy! 8)

I wanted you to know that I am intending to release soon an update of my Interface Plugin for the 3DVIA Virtools authoring system. I will try to include binaries for 4.1 so people like feranti can be happy. It will also contain a few fixes for bugs that produced crashes.

🙂

I think I will not include my simple texture painting module although actually it reached a usable state. It's no real paint application with plenty of features but I wished I had it back then when we did our first custom GPU shaded terrains in 2004 with per-pixel splatting masks. I think for these kind of tasks it might be good enough but I am still thinking about if I will include it to the free plugin-package or not.

Besides this, HTMLView got 2 or 3 new commands … pretty simple stuff but maybe a very interesting toy for some of you. Stay tuned! :p

Acient Castle Viz in 2004

I wanted to post less "news only" stuff but this merits it!

By accident I just saw the news RSS feed for the 2.1 release announcement. It comes with some very useful new features and looks like it's a free upgrade for 2.0 users. If I think how much people had to pay for the Virtools 4.0 to 4.1 upgrade …

They added a complete scriptable assets import-pipeline. This is hyper useful and important !!!!! What I did to improve our Virtools pipeline a couple of years ago, was a bit similar. We script our assets imports too, so our "BogBuilder", which is our single-click build-process, takes i.e. one CMO, instructions from a XML file, data resources to do some processing and then spits out a publishable VMO. This, in combination with the modded 3ds max exporter, boosted our iteration cycle excessively. So, scriptable assets imports … wow, cool addition! I mean most people doing projects will look for something like this, strangely Virtools never added it as feature.

Something I was missing in Unity was to load assets at runtime. Previously you had to create your own i.e mesh serializer etc. Now they have 'assets bundles' – so a weak point fixed. Also the scriptable Editor GUIs is cool. Virtools also has an Editor API but it's MFC and not the easiest stuff to use. Btw. I have a couple of free Virtools Editor Plugins for download (don't know if there are any others freely available).

There is a feature in Virtools which is (was?) one of those potentially good but not usable features, that is probably overlooked by many – maybe because Marketing never promoted it. It's the "Skin Join" BuildingBlock (Component). It joins two (skinned) meshes via a patch/bridge-mesh. I used a modified version for my Thesis project (~5 years ago) where the characters where customizable. The problem with this BB is, as with many others, that it's not targetable. This means it has to be attached directly onto the mesh at authoring time. This renders it useless for at run-time customizable characters.
Unity3D allows now to combine skinned meshes too. Haven't found any details online yet, so I don't know if it will also prevent any seams as the Skin-Join BB does.

Two other new key-features: streaming terrain and real-time shadows on terrain. They say that Unity3D is now ready to be used for MMOs!
Very nice update, congratz!

Multi body character explosion

Picture: explosion view of my thesis character. Besides multiple body parts, you can see the 'patches' I used to join them during runtime without any seams. Skinning and animating this kind of setups is a bit of pain though. Had to script me extra controls to allow me to switch quickly between different combinations inside 3ds max.

Last week, Virtools released their new Virtools 4.1 webplayer. It got re-branded (once more) and is now called "3dvia player". Previously it was called "3d life player" and before that "Virtools Web Player".  Personally, I am not sure if calling it 'merely' "3via player" is a good thing as they have a whole product line branded with "3dvia" in addition to a whole community/service. But afaik 3dvia composer, shape etc content won't be displayed inside the Virtools webplayer. I think it still requires something like the 3dxml player … maybe that's something that will change in the future?

There's also a new publishing-fees chart on the virtools website. It divides the Virtools webplayer into 3 packages

  • freemium (public and no end-user registrations)
  • freemium+ (private access or end-user registrations)
  • premium  (end-user pays fees for content access)

Well, for me that's basically commercial vs. non-commercial as today it's mostly about registered users, communities and profiles. It's not an attractive model from a modern perspective.

Nicolas Gaume, CEO, Mimesis Republic was mentioned in the 3dvia mp press release:

"3DVIA MP is an outstanding development engine that has given our team a collaborative work environment including low-level access for our programmers", said Nicolas Gaume, CEO of Mimesis Republic game studio. "The designers have been able to get results in record time while maintaining triple-A visual quality."

I think he is quite famous in france as he was president of known French game company called Kallisto etc. Anyways back to topic. On the FMX site it says:

Mimesis Republic designs, develops and operates a new generation of social networks: virtual 3D immersive worlds, by leveraging multiple types of gaming experiences to create new and increasingly synchronous social dynamics.

On the site of Mimesis Republic designs it says:

black mamba :
A universe and community in real-time 3D targeted at urbane cultures (Hip Hop).
Released in summer 2008 in partnership with: Universal Music, Sony Ericsson, Orange, Skyrock.

Looks like a GTA meets Singstar in Second Life Wink

But, as Helgason recently announced, there are also several Virtual Worlds and a MMO in works using Unity3D:

– 1 x full blown MMO being made with Unity
– 5 x virtual worlds being made with Unity
– 3 x well funded game portals being made with Unity

It's no surprise, with Networking (based on Raknet) included plus a GUI engine etc. The only think that makes me wonder a bit, is that Unity3D has no real external run-time binary format for loading scenes/objects/components data into Unity at runtime. People write their own serializers but I hope they will add their own format too. Currently the webplayer streams all levels into the memory, but I think there are plenty of use-cases where only a selective loading behavior is desired.

Btw. since the Second Life hype, there are so many companies working on virtual worlds … it soon will be crowded. I think there's a bigger one beeing produced in Berlin, too.

In 2000 I started to learn Virtools and my dream was to work with that technology fulltime. In 2001 I started to work on VR stuff for a PC-based 'CAVE'-like technology based on VRML. At daytime I did 3d content and scripting for it and at night time I was enjoying the power of Virtools.

some VRML stuff I worked on between 2001 and 2003   Multiplayer prototype I did in 2002/2003 using Virtools Dev 2.1

In 2003 I met for the first time Roland Wagner – the guy that wrote the magazine article about Virtools where I first ever read about it and which made me download their demo. In 2004 my dream came true and I joined Roland's team and worked full time on projects using Virtools.

I had the desire to push Virtools as much as possible – often developing at the edge of it's usability. For example we probably did the first commercial project in Virtools 3.0 where, for several outdoor scenes, every single object was using a shader.

Some stuff from the past years I worked on at bogengang

This enthusiasm of course revealed a lot, lot design shortcoming and bugs. And of course one never stops learning Virtools … even now after so many years!, but there were and are still real issues. Already some years ago I talked to many advanced developers that felt the same frustration like me: we were able to see the full potential of this technology if issues would be addressed. Some things improved over time, but not as fast and intensive as we wished. Often we wondered why it didn't progress faster … at some point it was clear that Virtools was lacking manpower especially since they started the complete rewrite that was named: mp. mp, the tech that addresses all issues!

In meanwhile Virtools prices started to climb and climb, while other technologies appeared on the horizon. After the web3D area, where still only a few used 3D and mainly for simple interactivity, more people wanted to do 3d games and content. Some open source engines like OGRE3D and Irrlicht got larger communities. Quest3D also became an established alternative to Virtools (except for those that used Virtools already).

Suddenly Virtools was no longer the best option ….  Other solutions had suddenly features that where not available in Virtools – or not to that degree. Even when Virtools was still the more productive environment, pricing difference made other solutions attractive.

A good example is Unity3D. It has physics and publishing for free. But script-code development is actually much slower in my opinion (compile time, no breakpoints and no stepping etc). It also has less features on one hand, but on the other hand features that Virtools doesn't have: modern shadow system, terrain engine, more advanced script languages (JS/C#). This becomes so attractive that people like Matthew switched and I … I am at least learning it at a slow pace. Bogengang, the company i am still working for, nearly bought UnityPro for a first project, if I would not have been too busy with other projects. But I am certain, it's a matter of time and we will use Unity for *some* projects in the future too.

Already 2 years ago, I told my boss that we need to introduce an alternative as 'Plan B'. As you can see, it's not fast and easy to do for us who are now used to develop quite effective with Virtools – especially with customized export & build pipeline. But even this time-saving might not always be enough to make 3d things available for attractive prices – at least in the sectors where we are mainly active.

Dom experimenting with OGRE and wxWidgets

3D is going mainstream. And this does not happen because Dassault Systemes is doing "3D For All" or "3dvia ". Technology is evolving extremely fast and even more and more young people are enthusiastic about games and digital creativity. In addition to that, key-companies like Microsoft, Nvidia and Sony know that they need many new talents for their markets. Therefore they are giving away tools and technology for free.

A good example is XNA Game Studio and XBox Community Games from Microsoft. Also free is Microsoft's Dark GDK for Visual Studio Express. NVidia of course has also tons of free tools: FX Composer, Mental Mill, NVSG ... Sony recently announced that they are going to release a free engine for the PS3 called PhyreEngine. Maybe Intel will follow one day with releasing the Project Offset Engine to push Larabee.

There is a fast growing Indie Game Scene producing a lot of new 3D content. The Casual Games market actually grew so much that it's no longer an Indie thing only. Not everything is free but accessibility to 3D content generation is facilitated by lowering costs: the Wii Kit is said to be costing less than 2000$ US and PS3 development could start with less than 1200$ US according to Sony!

Now I wonder where in all this is Virtools? Where does Virtools position itself in this market nowadays? mp is about to be released – instead of being a replacement of Virtools DEV its a new product, probably aiming a AAA multi-million budgets. So what is now the official role and position of Virtools DEV I wonder?

I already don't develop any plugins in my spare time for Virtools anymore because it 'feels' like an dead-end, lost time. If it's true or not, it doesn't matter… if you
know what I mean …. the enthusiasm I had for it is no more – that's a key difference. And probably I am not alone …. the Virtools IRC channel was never very crowed – 14 ppl. at peak times .. but now? EMPTY! Go and do a visit in Unity3D's IRC channel … see the difference?

Texture Painting - a DEV interface extension plugin experiment

The recently published Gamasutra article 'Nine Paths to Indie Greatness' mentions a lot of tools and technologies (bottom of page 3). Among them Unity but not Virtools. In the current issue of Digital Production, which is THE 3D magazine for digital content creation in germany, has articles about Unity3D and Quest3D – about Virtools I haven't seen any for ages.

Guys, change strategy … open Virtools to the masses, now that you have mp. It's no longer 1999 or 2000. Become Skype of the 3D sector! There are now so much more people knowing about interactive real-time 3D content creation!

Unity3D might not be perfect but it feels like a real alternative! Blade3D is still very, very young but who knows. There's also StoneTrip's Shiva or DXStudio. And one day Flash will have 3D too, they already started with Astro. Director11 comes DX9 rasterizer plus PhysX. Choices are starting to become available …

I just saw the press release – there is now a website for Virtools MP. It contains the video we already know with slightly better resolution and some more details – but not yet that extensive to satisfy the curiosity of existing Virtools Dev users.

Wink

Interesting aspects are: data is stored as XML which is probably much better for atomic handling, OO Behaviour-Graphs maybe similar in approach to the BG instancing that comes with Dev 4.1 , customizable build process, media processing, render slots (whatever this means), customizable culling, streaming of levels/stages (stage = scene?), advanced shadow system, gameplay templates.

 Virtools MP website

 Virtools mp schematicvirtools mp with material property sheet

A custom build and media processor is actually something we created in our company for DEV, too. It really boosts productivity! We use schematic scripting to implement the media processing and store media in special folders and with special tags in names. It allows the GFX teams to add new content of existing types without the need of a developer for assets integration. 

This is from the press release

Wider Platform & File Support: Virtools 4.1 and 3D Life Player are now compatible with Microsoft Vista and 3D XML V4. In addition, the Virtools SDK is moving to Visual Studio.net 2005.

Improved Usability Enhancements to Reduce Production Time: One much awaited feature for Virtools is the ability to instantiate a behavior graph that is introduced through a new "Call Behavior" building block. Using this new feature, developers will be able to considerably improve production workflow and delivery time.
Virtools 4.1 also provides rich ergonomic and schematic improvements as well as new commented video tutorials, significantly shortening the Virtools 4.1 learning curve.

Simplified Virtual Reality Production Capabilities: Both the Virtools VR Library and the VR Publisher model have evolved to respond to VR community feedback. The simpler publishing model is now available in two versions: "classic", targeted to mainstream VR displays (simple stereo HMDs or Walls) or "unlimited", supporting higher-end systems, including multi GPUs or clusters. This new VR Pack 2.5 also provides better clustering support, improving synchronization performance and quality when using Nvidia Quadro Fx G-Sync hardware, and better supporting multi-pipe and multi-core systems. It also includes new ready-to-use application templates (VRNR), provides support for recent VR devices like Natural Point Optitrack and Xsens MTi/MTx, and adds numerous development and deployment time-savers. New demos have been included, enabling new users and integrators to even better demonstrate the power of their VR equipment.

Enhanced Artificial Intelligence Capabilities: Partnering with Kynogon, Virtools 4.1 provides integration of a new AI library 2.0, which simplifies path-finding generation and design of Non-Playable Characters-