Thursday, 28th June, 2007

ShaderFX probably going to export Virtools conform HLSL in the future

Filed under: 3ds max, Virtools — dominique @ 06:47

The famous Ben Cloward came yesterday to the Virtools forum and asked for details about Virtools HLSL specifics. Together with the also well known Kees Rijnen  (Helium , PuppetShop etc) he produces a 3ds max PlugIn called ShaderFX. It allows you to visually script GPU shaders within 3ds max.

Image showing the user interface of ShaderFX - connected nodes for shader code generation

Bookmark and Share: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • del.icio.us
  • Technorati
  • Digg
  • Reddit
  • Google Bookmarks
  • YahooMyWeb
  • Live-MSN
  • Facebook

Does Dassault Systèmes want everyone to create and experience life as 3D online content?

Filed under: Virtools — dominique @ 06:26

I just went quickly over the Virtools newsletter (July 2007). There I read: 

"Imagine a world where everyone can leverage the power of 3D, in which we can create, share, and experience life in 3D online, enabling us to join efforts to improve our living spaces and the products we use daily," says Bernard Charlès, president and CEO, Dassault Systèmes. (…)

First when I read this, i thought everybody. Now if I look at "enabling us to join efforts to improve our living spaces and the products we use daily" then it's seems to filter 'everyone' to 'everyone of the PLM market'. 

It then says

(…) The Virtools product line is part of this new Dassault Systèmes’ 3DVIA brand establishing 3D as a universal media for consumer and professional communities, and allowing anyone to imagine, play, and experience products and services used in our daily lives

Ok, here it say Virtools is aimed to be the motor to establish "3D as a universal media" targeting "anyone".

I can see that 3Dvia is aiming for this in the professional, industrial/PLM market but somehow the aim to establish Virtools as universal media is contradictory to the Virtools Web Player/Life Player publishing fees that has been introduced with Virtools (Dev) 4.0. If they want a big user base they need developers, developers, developers … developers, developers, developers. Does this sound somehow familiar to you ??

If not, see the video below Wink

… yes that's MS strategy. And they are targeting for even more developers. Look at Express, XNA etc. Or look at web 2.0! Massive amount of content using communities (everybody is a developer). That's also why you find large user bases there, thus a lot of page impressions, thus the high prices when portal are sold for millions.

With CREATION Virtools was very, very avant-garde. Years ahead of others: low-cost platform, schematic scripting, data driven framework, reusable and attachable components etc. Last year with the "3DForAll" claim, one might have thought Virtools is finally aiming to become the "Flash" for 3D online content, but the prices raised once more and some more advanced developers went away. Personally I became less active in the online community and my spare time is going into other technologies.

Where is this now going to? Elite market or mass product? I hope we soon get a clear answer! 

Bookmark and Share: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • del.icio.us
  • Technorati
  • Digg
  • Reddit
  • Google Bookmarks
  • YahooMyWeb
  • Live-MSN
  • Facebook

Wednesday, 27th June, 2007

Very interesting blog: Game Ai for Developers

Filed under: GameDev, Programming — dominique @ 04:46

I am following an interesting blog called 'Game Ai for Developers '. It's quite new and has frequently interesting updates. It's especially interesting for people thinking a bit about architectural aspects like the behavioral approach Virtools uses for schematic scripting via their BuildingBlocks. I already mentioned it a couple of times that the approach of creating reusable scripts that you attach on entities has it's benefits but in many cases it's better to go data driven. Virtools supports data-driven implementations even since 1.0.1 but unfortunately they didn't use that approach often enough. This also lead to many people choosing the wrong design where data-driven was the better choice.

Moreover with the multi-core problematic, all this might change when trying to do processing like a GPU.

I don't know how Virtools does approach this challenge in their Next-Gen MP product. We see that they have something called Task and Task groups - common terms in this context. So maybe you will schematically script tasks that act on data - or if we consider 'task-groups', on data-context/isle/zone. I don't know.

That's also where we can come back to the Game Ai For Developers blog. It's related to this topic! Very interesting! Smile

Bookmark and Share: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • del.icio.us
  • Technorati
  • Digg
  • Reddit
  • Google Bookmarks
  • YahooMyWeb
  • Live-MSN
  • Facebook

3Dvia - a new Dassault Système branding

Filed under: Virtools — dominique @ 04:37

Looks like DS found another expression to define their vision. After 3DforAll and 3d Life and lifelike and lifelike experiences, there is the new mothership expression: 3dvia. 3Dvia divides into the Virtools product suite for 'lifelike' experiences, into the formerly called 'teapotters' portal (was in development for 2 years!) for sharing and viewing 3dXML and a couple of CAD related portals and products.  Moreover there is the the 3D caputering tool 'printscreen' and something non-public called 'Shape It' (SketchUp clone?)

The CAD related portals deal with sharing CAD data - targeted for manufacturers and all the Product Cycle Management (PLM). 3Dlive seems to be something like IM, Assest Versioning/Management and 3D explorer in one. Where Acrobat3D sends PDFs around and allows to stick notes on the embedded geometries, DS seems to aim for more 'connectivity' (is this the right expression?).

Though 3D life, 3D live and 3d experiences are well fitting expressions, these have been used plenty! Actually I am owning the German '3dexperience' domain for years now. My boss talked to me about giving life to objects using Virtools also since i know him. So these word combos are nothing new but 3Dvia seems fresh and communicates very well the idea.
On the other hand I am not sure if using similar sounding words for product names within a portfolio is such a good idea: 3DVia Life Player, 3DVia Live Collaboration …

Roro said, Virtools is going to announce details about the Virtools ((DEV) 4.x) future this month. I hope there is more information to come soon.

Bookmark and Share: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • del.icio.us
  • Technorati
  • Digg
  • Reddit
  • Google Bookmarks
  • YahooMyWeb
  • Live-MSN
  • Facebook

Saturday, 23rd June, 2007

A method for developing and providing components in a team using Virtools Dev (pre 4.0)

Filed under: Virtools, Virtools Tutorials, Tips and Tricks — dominique @ 07:38

Here is one of multiple possible approaches to develop and provide components as part of a team. It works without selection sets and therefore is pre Virtools 4.0 compatible. We often used this one! (Today you may use selection sets which much more powerful and are maybe a result of this suggestion

There are two major mechanisms that this approach is based on

  • Level and therefore level scripts are not saved into NMOs
  • Parameter shortcuts can be saved without it's source and are remapped by name and type when loaded

Handling differs a bit depending on how much elements you need in your component-development-cmo from the bigger context. If the complete content of your CMO needs to be provided and doesn't clash with existent elements and you only need access to global parameters (thus sources for parameter shortcuts), then you import or recreate them on a level script. Now if you want to export all your content except the level scripts you do the following:

  • go to the level manager
  • select global
  • right-click and select "select children" from the context menu
  • now open another category from the children of global. For example 3D Objects
  • now right-click on the category you just opened and click on "select children"

You will now see that all the content of your level is selected. Now right-click on one item and choose "save as". Everything get saved except the level scripts where your test-framework for your component and the shared global parameter sources are.

If you don't want to save everything i.e. because you have imported stuff that you need for development but it's not part of the component, then script the save-logic i.e in a level script and activate it via a boolean parameter ("saveMode") or a key. To specify the elements to save you can use

  • groups
  • arrays
  • selection sets from the 3dLayout (limited to 3d entities)
  • collections (ObjectArrays)

 (Note: As mentioned this is for pre Dev 4.0 CMOs. With 4.0 there are the Selection Sets doing this for you.)

The way you import it, is another story and depends on project size and awaited component update frequency

Bookmark and Share: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • del.icio.us
  • Technorati
  • Digg
  • Reddit
  • Google Bookmarks
  • YahooMyWeb
  • Live-MSN
  • Facebook

Tuesday, 19th June, 2007

Exporting from 3ds max to Virtools using Real World Scale

Filed under: 3ds max, Virtools, Virtools Tutorials, Tips and Tricks — dominique @ 01:06

I have a case where I procedurally create content in 3ds max. Using the quite new feature "RealWorld Scale" UV coordinates I also get usable UV generated. But when I imported the geometries into Virtools, the UVs had an offset of 0.5. I saw that if I turn off the Real World Scale, in 3ds max, I lost that offset. I also tried the new Dev4 Collada import but it seems to totally ignore tiling and offset values. So, here are the code snippets for a quick Max2Virtools.dle source code Mod, enabling RealWorldScale support. I only tested it for my case, so maybe it doesn't work for other cases - in that case it might serve as starting point.

In file export.cpp find the section that looks like this

    //– Apply tiling
    u=-uvgen.UOffset + 0.5f + ((u-0.5f)*uvgen.UScale);
    v=uvgen.VOffset + 0.5f + ((v-0.5f)*uvgen.VScale);

replace it with something like this

    //– Apply tiling
    // dbo 19.07.2007 - when using real world coords offset by 0.5
    // warning - just tested for my case - use this only as a starting point
    if (! uvgen.RealWorldCoords)
    {
        u=-uvgen.UOffset + 0.5f + ((u-0.5f)*uvgen.UScale);
        v=uvgen.VOffset + 0.5f + ((v-0.5f)*uvgen.VScale);
    }
    else
    {
        u=-uvgen.UOffset + ((u-0.5f)*uvgen.UScale);
        v=uvgen.VOffset  + ((v-0.5f)*uvgen.VScale);
    }

in that same file you have something like

    uvgen.AngleMap        = uvs->GetAng(0);
    uvgen.Cropping        = FALSE;
    uvgen.UCropOffset    = 0;
    uvgen.VCropOffset    = 0;
    uvgen.UCropScale    = 1.0f;
    uvgen.VCropScale    = 1.0f;

 append one line so it looks like this:

    uvgen.AngleMap        = uvs->GetAng(0);
    uvgen.Cropping        = FALSE;
    uvgen.UCropOffset    = 0;
    uvgen.VCropOffset    = 0;
    uvgen.UCropScale    = 1.0f;
    uvgen.VCropScale    = 1.0f;

    uvgen.RealWorldCoords = uvs->GetUseRealWorldScale();

In the file Max2Nemo.h replace this

struct TextureUVGen {
    BOOL TileU,TileV;
    BOOL MirrorU,MirrorV;
    BOOL Cropping;
    float UOffset,VOffset;
    float UScale,VScale;
    float AngleMap;
    float UCropOffset,VCropOffset;
    float UCropScale,VCropScale;
    TextureUVGen() {
        TileU = TileV = MirrorU = MirrorV = Cropping = FALSE;
        UOffset = VOffset = AngleMap = UCropOffset =VCropOffset = 0.0f;
        UScale = VScale = UCropScale = VCropScale                = 0.0f;
    }
};

with this

struct TextureUVGen {
    BOOL TileU,TileV;
    BOOL MirrorU,MirrorV;
    BOOL Cropping;
    BOOL RealWorldCoords;
    float UOffset,VOffset;
    float UScale,VScale;
    float AngleMap;
    float UCropOffset,VCropOffset;
    float UCropScale,VCropScale;
    TextureUVGen() {
        RealWorldCoords = TileU = TileV = MirrorU = MirrorV = Cropping = FALSE;
        UOffset = VOffset = AngleMap = UCropOffset =VCropOffset = 0.0f;
        UScale = VScale = UCropScale = VCropScale                = 0.0f;
    }
};

You are ready! Note this is for 3ds max8 and +
If you need the binary for 3ds max8, send me an eMail.

Bookmark and Share: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • del.icio.us
  • Technorati
  • Digg
  • Reddit
  • Google Bookmarks
  • YahooMyWeb
  • Live-MSN
  • Facebook

Monday, 18th June, 2007

Old site image-popup fixed and a bit about blogging and Virtools stuff =o)

Filed under: Site News, Virtools — dominique @ 02:28

I still have my old site online where you can grab some maxscripts like Verty or Distributy or read about some of my very first Virtools projects ! I setup that site in 2003 where auto-resizing/-centering pop-up windows for images were probably still state-of-the-art. Now it's totally old-school …  hehe …

Wink

Anyways, I discovered but ignored for a while that the script didn't work anymore for Mozilla Browsers. I just had to add one condition to fix it for FireFox 2.x. I hope it works now for everybody (that has JS enabled) - if not let met know.

This year, it seems that there are not that many blog entries from me. I have tons of drafts in the back-end, but somehow lacking the time to finish them … some also might be outdated or obsolete due other blog entries. Some of them are Virtools related containing some workflow hints and one even with details about our one-click build pipeline that we use now for all our projects.

The problem is unfortunately, that I am not allowed to go into details for this kind of stuff. It boosted our productivity by a massive factor, … really massive. Virtools says that they are working with some of their customers to offer their pipeline solutions and consulting for others. Probably they mean Leviathan Games as they are a close partner and already published information about their pipeline. Their publication was also the reason I kicked our old system and designed a new pipeline and tool. We had assets reloading before using the webplayer and some custom DLLs but, besides it went incompatible with the new Virtools Life Player, it still was too much clicking and the iteration frequency still low. I didn't kicked it all out. We already used directories for classifying assets for the post-import processing step and it's still a major element besides identifiers in names.

I have an article draft were I talk about how to easily export components developed in a sandbox CMO as part of a team or development workflow. It's from the pre 4.0 Selection-Set area and certainly nothing new for advanced users, but maybe there are still some 3.5 or 3.0 users, that might find that information useful. I'll try to publish this one soon.

Some time ago I also modified the occlusion manager. Though Virtools does not come with complete source codes, they fortunately include a larger amount of BuildingBlock and Manager sources in the SDK. I only wish I would less often have to dig into these.Wink

The docs say that the occlusion manager may take a lot of processing time if there are too many occluders. So my first thought was to add and remove occluders according to some scene analysis. But the manager rebuilds the hull each time you assign the attribute - so not the best thing to do frequently. Therefore I modified it so I can enable and disable occluders without the penalty of rebuilding a hull. Moreover I added a special occluder type: ghost occluders. The object is invisible but still acts as occluders - useful if you want to simplify a hull even more by using a custom proxy object/mesh.

Bookmark and Share: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • del.icio.us
  • Technorati
  • Digg
  • Reddit
  • Google Bookmarks
  • YahooMyWeb
  • Live-MSN
  • Facebook

Friday, 15th June, 2007

FX Composer 2 and Mental Mill now in public beta !

Filed under: GPU Shader, GameDev — dominique @ 09:17

It's there … for everybody now! Cool

Grab your FX Composer 2 beta copy!

NVidia FXComposer 2 - beta 3

I already played a bit with Mental Mill some time ago … but only very shortly. The GUI seems a bit unusual (and a bit slow), but of course it's the first iteration and of course it will take time to learn how to use this tool. It can export to HLSL and CGfX. FX Composer 2 also supports COLLADA FX (Model Data and Shader Data) … everything very interesting.

I am curious, let me know what you think about Mental Mill and FX Composer 2! 

Bookmark and Share: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • del.icio.us
  • Technorati
  • Digg
  • Reddit
  • Google Bookmarks
  • YahooMyWeb
  • Live-MSN
  • Facebook