Friday, 16th May, 2008

Autodesk bought RealViz and Kynogon

Filed under: 3ds max, The World of 3D — dominique @ 09:38

Eye.I.It's already old news but I just came across it. Boy, there are many acquisitions lately!!

Some RealViz products will be discontinued. One of them is Matchmover of which we have a license… Surprised
I guess if it gets integrated into 3ds max, we won't mind at the end.

(…) 

Autodesk intends to develop and sell REALVIZ’s Stitcher Unlimited, Stitcher Express, ImageModeler and Movimento software as standalone products. Matchmover, Retimer and VTour will no longer be available as standalone products; core technology from these REALVIZ products will be integrated into future versions of Autodesk’s existing products, enabling customers to bring the real world into design environments.

The following REALVIZ offerings have been discontinued: Stitcher Pro, Stitcher Unlimited DS, StoryViz, and hardware and software product bundles. Education versions of ImageModeler and Stitcher continue to be available.  Student versions of ImageModeler and Stitcher are no longer available.

(…) 

Source: Autodesk Press Release  

Also take note of the part I highlighted. This probably means image-based modeling/lightning and pathfinding+traffic modules for Max, Maya etc. 

(…)

where it's easy to build 3D environments or virtual sets by stitching pictures together or derive 3D models very quickly from set photos using image-based modeling. Games now require a lot of facial animation. Animators can rough out facial animations using a webcam and optical motion capture.

(…)

We have plans to use these technologies across a wide spectrum of industries… Every country in the world is starting to model their cities in 3D, and the Kynapse technology offers some very relevant potential for these applications. The path-finding and AI technology can be used to do simulations of crowds inside of buildings or stadiums or to model and simulate car traffic in digital models of cities.

Source:  VFX World Interview

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, 1st April, 2008

3ds max 2009 is shipping

Filed under: 3ds max — dominique @ 11:22

The 3ds max 2009 trial download is now available. You can watch some demo videos of the new features online.

New features include

  • quadruple bipeds
  • mirror biped animation
  • falloff tweaking in thew viewport
  • spline-based UV generation
  • hitting plenty of times on UV pelt or relax is over due new start/stop toggle buttons
  • viewport navigation gizmos
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

Thursday, 18th October, 2007

Autodesk 3ds max 2008 trial now available for download

Filed under: 3ds max — dominique @ 12:14

Several CG places are reporting that the 3ds max trial version you can download from autodesk is the new 2008 one. Haven't check it yet … but will do so soon too.

Thus 3ds max 2008 is shipping …

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

Saturday, 1st September, 2007

Your vertex count isn’t the same in 3ds max and in Virtools? Is Virtools buggy?

The short answer is: no!

The long answer is:  3ds max hides complexity. Before per-pixel handling via programmable pixel-shaders became available on consumer gfx cards, shading components across the triangle were mainly calculated by interpolating the value between the three vertices. A triangle is flat and thus you can interpolate in a linear/straight way. For example the vertex colors and normals.

Now, if you have a mesh inside 3ds max - let's say a cube in it's default state. It has 6 smoothing groups, because there are hard edges between each face. How many normals do you need for each corner vertex? Each corner has 3 faces - each of them pointing to another direction and having "hard" seams at it's borders.

We need 3 normals for all 8 corners … that's 24 vertices. Ok, now convert it to an 'editable poly', go into the face sub-level and hit CTRL+a to select all faces. Hit "clear all" and then smoothing group "1" in order to assign a single smoothing group to all faces. Export this one and load it into Virtools. And?

Oh, it ain't 24 anymore but not 8 neither? Yes! That's because there are not only normals stored in the vertices but also UV coordinates and color/material information. In 3ds max do then the following:

  • add the "UV Unwrap" modifier to the cube
  • go into face sub-level mode
  • select all
  • open the "Edit…" dialog
  • select Mapping -> Unfold Mapping ('walk to closest face') -> Ok
  • You now have a cross-like UV layout
  • go into vertex sub-level mode
  • select through each vertex and notice that sometimes another one is highlighted in blue
  • right click and select "target weld" form the context menu
  • now weld each vertex to it's "blue partner" in case it has one

Import the smoothed cube that has no UV seams into Virtools … … … what does the mesh setup say? 8 vertices, finally !!!

Cool

I hope this little tutorial has shed some light on the topic therefore you should now be able to understand better why there might be differences in vertex count between Virtools and 3ds max.

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

Sunday, 19th August, 2007

3ds max 2008 : new features announced

Filed under: 3ds max, The World of 3D — dominique @ 10:26

3ds max 2008 is announced. Something interesting is the GPU shadowing system for the viewport. Checkout the video about the "review rendering" feature. It does support up to 64 lights.

 3ds max 2008 preview - gpu based review rendering for shadows

I also like the new working-pivot and the new LOD options. The ability to UV unwrap multiple objects manually at the same time also sounds very useful.

And … finally … a better maxscript editor!! Yay :) 

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

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

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

Tuesday, 12th September, 2006

Too many active scripts at once …

Filed under: 3ds max, GameDev, Site News, Virtools — dominique @ 11:30

I've seen some interesting Virtools projects where unfortunately the behavioural approach (like promoted by Virtools) is used too extensively with a huge number of objects and lots of scripts. If you have then a look at the profiler you see the behavioural manager is eating a lot of CPU power. Why?

I think it's ok to say that the behavioural manager is currently working a little bit like an interpreter because it needs to parse the graph of BuildingBlocks in order to check and manage the activity states of the linked components. The more deep and nested your graph is, the more it needs to traverse the graph - at least potentially. It depends on the activity states of the links and BuildingBlocks. That's also why you try to separate and wrap parts that are only active once in a while. A manager-like approach (one script handles many objects) might be a better approach for such situations.

Recently I started to read a little bit about (low-level?) continuations and (higher level?) coroutines , tasklets , micro-threads , generators. Some of this stuff was or is in stackless phython. There are some interesting articles in regards of implementing game object logic using concepts like tasklets. Maybe something like a behavioural engine could be implemented using either signals-and-slots or these tasklets and would then probally not suffer anymore from so heavy performance penalties when using lots of scripted objects at the same time. This concept of micro-threads is also used for EVE-online - a very complex MMOG. Some more interesting links:

Game Smart on Coroutines
Multithreaded Game Scripting with Stackless Python
Stackless Python: about Tasklets
Discussion Thread about stackless python, co-routines, micro-threads etc.
Gamasutra: Game Scripting in Python  

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