Please login or register.

Login with username, password and session length
Advanced search  


For WME related articles and tutorials visit WME Resource Center.

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - ErV

Pages: [1] 2
Feature requests, suggestions / Several suggestions...
« on: October 24, 2006, 11:39:59 PM »

I've been working with WME for some time, so, there is a list of all things that could make WME better. (If they are implemented). Some of them are very specific, but... (please don't take anything personally - it's all just my working expierence):

1) Request: type informations in scripts. Or at least some way to extract properties of given variable.
Reason: for example - there is "ShadowColor" property in Actor3D. When I first met this value I've spent some time thinking just about in which way it is stored. Is this an rgba structure (for me this solution looks reasonable)? Or is it a DWORD? And if it is structure what are it's fields - ints or floats?
So I suppose that more documentation is needed, or there must be added some way to specify explict structure of variable.

2) Request: Scripting speedup. Right now scripting is quite slow. 20lines script attached to an actor in some situations can make engine run VERY slow...

3) Request: IWmeValue::GetType();
Reason: It is not easy sometimes to determine the type of variable passed to a plugin from a script. Probing it using ISValInt() of IsValFloat() looks to me as a very strange to do things. Another bad thing is that IWmeValue uses virtual functions. That increases memory usage. What about analog of VARIANT types? Not for structures, just for a single values?

4) Request: LowLevel render access/per actor renderstates.
Reason: It is not possible ANY of standart 3D tricks right now. Not just event a simple soft shadow.
Not possible to do anything! (Sorry, it looks like I'm getting too emotional). During the laast month I've been asked several times about soft shadows. I know several techniques to achieve desired effect (at least five of them), but I was unable to implement any of them due to engine restrictions.  
Even attaching simple custom shadow blob was not possible because it cuts off actor feet due to enabled D3DRS_ZWRITEENABLE. I know that WME tries to be a "High level engine", But (IMHO) it's a bad direction of progress. I suppose that a simple api layere that could help me to change drawing order, to set a specific render-state on per-actor basis, to change render target to something I want to use, to draw custom objects without adding actor would be great.

5) Request: LowLevel scene access. (Lights, geometry)
Reason: That's all comes from "soft/dynamic shadows" request of my customer. When I tried to access a scene information (number of lights in scene, theri names, positions, states, inner/outer radius, type, falloff) I found that there is none available. Finally I wrote a plugin that provides all this information, but, that's certainly just another wrong way to do things. Since information is already stored in engine, isn't it easy enough just to make it accessible in scripts? Just for reading, at least?

6) Request: LowLevel animation controller. (actors)
Reason: It's not possible right now to implement such a simple effect as making actor to look at something. (I do not mean turning the whole body, just the head). I can't parse 3d actors bone structore. This makes many good things impossible. (as well as another shadow-making technique)

7) Request: actor/model/scene loader plugin.
Reason: What about custom model formats? both *.X and *.3ds are quite old and both have large amount of limitations: There is no lights in *.X, and there is no normals in *.3ds, as well as no free spot lights and so on. And, by the way *.X file format gets spoiled by Microsoft with every next generation of DirectX SDK.

8) Request: hardware acceleration support.
Reason: As I see, currently WME doesn't use fully hardware acceleration (D3DDEVCAPS_PUREDEVICE). I know that there are some specific problems on both ATI and GeForce (point sprites/wireframes on ATi and the fact that there is no indexed Vertex blending on ANY GeForce video card), but all of them can be solved. And hardware support will make run with rocket speed compared with current state.

9) Request: stencil shadows optimizations
Reason: It looks like Stencil Shadows are calculated completely using CPU (I think so because of two times slowdown). There is a good article in ATI SDK "Hardware Shadow Volume Extrusion using vertex shaders". Shadow Volumes, created this way works well even on cards with no hardware VertexShader support. And they are MUCH faster than a CPU runtime-calculated shadows

10) Request: Mesh/3DEntity/static Mesh class.
Reason: Creating  an actor for every teapot in scene is a quite strange way(IMHO) to do things. It looks for me like a way of wasting system resources. I think that having an unanimated static/moveable mesh would be good.

Any comments?

Technical forum / ZWriteEnable == false for an actor3d
« on: October 20, 2006, 08:08:14 PM »
I need to disable Writing to a ZBuffer for a specific actor. (IDirect3DDevice8->SetRenderState(D3DRS_ZWRITEENABLE, FALSE))
Is there any way to do this just for a single actor, without breaking all scene?

Technical forum / WME hangs on 3ds files!
« on: October 19, 2006, 10:08:15 PM »
I've got a problem. Wme hangs on 3ds files, that contain
"Light" chunks(0x4600) with "DL_OFF" (maxsdk\samples\impexp\ofile.h) subchunk (signature 0x4620).
This chunks is 6 bytes long, conains no data and means only that the light is switched off. 3dsmax 6 exports this chunk, when scene contains a light that has "On" checkbox deselected.

I can send file, causing problems, if requested.


Technical forum / SpotLight ranges are not working?
« on: October 19, 2006, 10:03:31 PM »
It looks like attenuation doesn't work with spotlights exported from 3dsmax, even if farAttenuation was set. I know that DirectX supports spotlight attenuation. Is this a bug? (I'm talking about decreasing light brightness according to the distance from light, not the "falloff" and "hotspot" parameters)

Technical forum / Controlling Actor3D transparency.
« on: October 19, 2006, 03:43:58 PM »
How can I control actor(3D) transparency? (for example - disappearing ghot) I need to set transparency to a specific value, calculated in script. Is this functionality supported?

Technical forum / Global Ambient Lighting
« on: October 19, 2006, 03:36:27 PM »
Is there any way to set "Global Ambient" value? I mean - the amount(color) of ambient lighting for whole scene, not just for a single light. I've already tried to do a simple hack and call IDirect3DDevice8->SetRenderState(D3DRS_AMBIENT, 0xFFFFFFFF). This didn't work. It looks like there is no mention about ambient lighting in documentation. *.3ds files doesn't have "ambient-related" chunks either. In current scene setting up many point lights is not an option.
How problem can be solved?

Technical forum / Problems with flat shadows.
« on: October 17, 2006, 10:38:23 PM »
I've noticed that in certain situations flat shadows causes graphical artifacts.The model rendered to the texture simply doesn't fit in some cases. Because texture uses D3DTADDRESS_CLAMP, edges of texture, filled with non-transparent color, stretch to inifnity and make shadow look unrealistic. How can this be avoided?

Technical forum / Actor radius/bounding box.
« on: October 17, 2006, 10:29:57 PM »
Is this possible to access radius of actor bounding cylinder or exact bounding data somehow? (Via script/plugin) How can this be done?

Technical forum / Exact meaning of "scale" in Actor3D
« on: October 17, 2006, 10:27:43 PM »
What is the _exact_ meaning of "Scale" property? If my model has scale set to 100, does that mean that it will be 100% size of original model or does it mean, that the actor will be 100 times larger than original model?

Technical forum / What transform space is used by Actor3D->LightPosition?
« on: October 13, 2006, 01:32:55 PM »
What transform space is used by Actor3D->LightPosition? I'm not sure if it's "world" or "view". I know, it's relative to the actor, but what about rotations? Does this space use same axes/rotation as "World" transform? Or is it somehow aligned to "camera" transform?

Technical forum / SetLightPosition doesn't work when called from plugin!
« on: October 12, 2006, 07:04:57 PM »
For some reason, SetLightPosition doesn't work when called from my plugin. It makes shadow disappear instead of changing it's direction. However, when SetLightPosition is called from script, it works fine, even with same coordinates.
Here is the code (actor is initialized earlier):

   IWmeParamSet* paramSet = game->CreateParamSet();
   actor->CallMethod("SetLightPosition", paramSet);      

What's the problem? I've even tried passing ints instead of floats, but shadow keeps disappearing. The actor holds correct reference (I've checked this several time - it has type of "actor3dx", and contains valid name). So, what is the reason of this, and how this problem can be solved?

Technical forum / Enumerate all 3D actors in scene.
« on: October 11, 2006, 10:05:01 PM »
How can I enumerate all 3D actors in scene? Enumerating entities is easy (Scene->GetNumLayers, Layer->NumNode, Layer->GetNode, etc...), but actors doesn't appear among those nodes during enumeration...

Technical forum / Synchronize two 3D actors.
« on: October 10, 2006, 10:26:37 PM »
How can I make one actor to copy another actor's movements? Actors are different, but the animation names, frames per second and animation lengths are same.

P.S. I'm sure it has been discussed somewhere, but I was unable to find the topic.

I'm looking for a way to create dynamic character reflections on the floor. Characters are Actor3Ds.
In ideal case, character's reflections must be distorted, dynamic and blurred. :)
However, simple dynamic reflections (like mirrors) would be fine.

I've already thought about several possible solutions. It looks like none of them can be implemented in current version. Here they are:
1) Mirror actor horizontally, set his material to something like floor's specular color and render.
Problem: no "render 3D object method". In other words, it is impossible to render any object with a user-defined transformation.

2) Render scene to texture, flip the texture. Same problem as in first solution.

3) Make a blurred sprite, attach to the actor's feet.
Problem: sprites doesn't know anything about 3D position, and will not be scaled according to the distance. Anyway, there will be no distortions, a lot of problems with entites blocking\non blocking the sprite, additional artwork is required. Even if implemented, this method may produce ugly visual result on the edges of sprite (where alpha channel drops to zero) because of filtering.

4) (Improved version of solution 3). Store hidden reflection sprite in actor(somehow), store a "normal map" in the entity that is reflective, perform software rendering with distortion to clip the sprite by entity's shape and distort it using "normal map".
Problems: because camera data is not accessible, it will be difficult to scale sprites, possible workarounds include defining copies of camera data in scripts, and that will most certainly lead to serious problems, when changing scene.
Also, this method will probably bring engine to knees due to the CPU load, entities in scene will need great amount of additional artwork, and even if implemented, this method may produce ugly visual result due to the lack of filtering/other reasons.

Is there ANY way to make dynamic character reflections in current version of WME?

I need to attach an image data (sprite would work fine) to an actor/object. (WME DevKit 1.6) The data/sprite is to remain invisible, but it must be accessible/readable from plugin. This data/sprite is to be used in pixel operations (read access only).  Main goal is to attach this data to 3D actor as a property or something readable/easily accessible from plugin. I've read documentation and still didn't found something suitable. It looks like sprite object (i'm not sure about this) can be only accessed from something via GetSpriteObject(), but can't (am I wrong?) be created directly. What are possible solutions?

Pages: [1] 2

Page created in 0.03 seconds with 17 queries.