Neoaxis FAQ
cut/pasted by Terry Morgan


website:
http://www.neoaxisgroup.com


Last Edited: Sept 1, 2008
Current Version 057 hit CTRL-F and search 057 for changes
Current Version of Ogre 1.4.7

Commercial License:
http://www.neoaxisgroup.com/commerciallicense.txt
Main difference Commercial license from Indie license is an access to source code of editors.
Therefore it would be dishonest to another license owners, to give to you a source code at smaller cost.

Licenses comparison

Features

Non-Commercial License Indie License Commercial License Source License
         
Access to all engine features
Source code of most part of the game-specific classes of game objects
Documentation included (descriptions, tutorials and API reference)
Free upgrade to NeoAxis Engine 1.0
License to develop one commercial project
Source code of all game-specific classes of game objects
Opportunity to create the new classes of high level materials
Source code of all high level materials
Source code for Configurator
Opportunity of working with posteffects from game code
Source code of HDR, MotionBlur, HeatVision, Blur
Opportunity to create the new types of file archives
Source code of zip archive support
Source code of water plane
Toolkit source code (Resource Editor and Map Editor)
Source code of path finding system
Do not need to display an engine logo at all
Engine source code
Official technical support (6 months for one person)
         
Cost $0 $99 $499 $9,999


My website-
 
http://terrymorgan.net/download.htm

Neoaxis wiki: http://www.neoaxisgroup.com/wiki/Main_Page

russian wiki http://ru.wikipedia.org/wiki/NeoAxis_Engine

tutorials, resources-
http://www.na-types.com



http://games.kipase.com/index.php contains:

Animations in NeoAxis
MilkShape to NeoAxis
XSI ModTool to NeoAxis

Neoaxis site-
http://www.namods.com

How to get  from Maya to Neoaxis:

http://www.vital3d.com/neoaxis/maya2neoaxis.zip

Q. Where is keeper of  logic's tutorial?

A.
 Tutorial 1 - The Map & Resource Editors.doc (2.5 MB)

Tutorial 2 - Basic Game Template.doc (25 MB)

Templates for tutorial 2 (also included inside the doc):

NeoAxis TutorialTemplate.zip (10 MB)

NeoAxis BasicTemplate.zip (10 MB)

Q.Where is dootuz' working girl tutorial?

A.
http://www.the7thhour.net/TUTORIAL.rar

Where is jcd37's '3ds Max level editing to Neoaxis' tut?

http://rapidshare.de/files/38655457/Untitled_0001.wmv.html

22mb

1 person's survey of low-cost game engines (Guess who wins?)

Last addition: April 15,  2008 current version 0.541 hit CTRL-F to search for 0.54 for latest features

Update Oct 3 2007 You can buy Neoaxis with a free email address (gmail, yahoo) now.


What is Neoaxis?


A game engine, using Microsoft NET framework, (which requires Microsoft Installer 3.0), http://www.microsoft.com
Ogre Rendering engine (included with Neoaxis download)

Also needed: Microsoft visual C express for programming-

http://msdn2.microsoft.com/en-us/express/

Who made Neoaxis?

ivan.jpg

Ivan Efimov..
So.

I am 25 year old. I live in the central Russia.

I for a long time take a great interest in programming. I
I have a site with my old projects.
www.betahead.narod.ru
It in Russian, but all links in English. In the bottom of pages there are screenshots.

My first big project was in my 16 years. It real-time strategy. As Dune2.

http://betahead.narod.ru/programs/dw/index.htm

Penultimate my project is third person action. You can see familiar models at screenshots. 
http://betahead.narod.ru/programs/c1/index.htm
Alas, he has not been finished.

I love games. Earlier I played Starcraft, Quake3 and Warcraft3 in the internet and with my friends.
Now I sometimes play Dune2 for the speed. 

At present I live in Russian village. Cows here go. 

You can help the NeoAxis project!
The project is developing for you and requires your help.

How you can help the NeoAxis project?
There are some ways to help the project:

1. You can actively participate at a forums and can help with development wiki.

The developer loses enough time the for support of users.
You can facilitate his work and it means to accelerate development of the NeoAxis.

Also all feedback about the project and site is appreciated and important to us! Our goal is for the engine to be as convenient and simple to use as possible!

2. You can help the project by money.

It is more useful way of the help. Smile

You can buy the license.

You can buy the license. Probably even earlier, than it is necessary to you.
In any case, it will be very useful now!

Link to services page:
http://www.neoaxisgroup.com/services.htm

You also can make the donation.

So if you've enjoyed using NeoAxis or you like a direction of development of the NeoAxis, a donation is always appreciated, large or small.

Link for donation:
https://www.plimus.com/jsp/buynow.jsp?contractId=1725726

At payment specify please, what features in the engine are necessary to you first of all.
"NeoAxis Features request" field.


 Q. What do I need for running my game?

 A. To run the NeoAxis Engine applications you must have the following components installed:

   * Microsoft .Net Framework 2.0
* Microsoft Runtime DirectX9c

Please make sure that you have the latest drivers for your graphics card before running the game.

   * Get latest NVIDIA drivers
* Get latest ATI drivers

[edit] Here's what you need to build games using NeoAxis engine

To make games using NeoAxis Engine, you need to install two applications: NeoAxis Engine SDK and Visual C# 2005 (or 2008) Express Edition

   * NeoAxis Engine SDK - SDK (software development kit)
   * Visual C# 2008 Express Edition (Or alternatively, you may download the Visual C# 2005 Express Edition). 

You might need to scroll down a bit to find the right version. Please notice that the total download size for Visual Studios is 300-400 megabytes, so you need a reasonably fast Internet connection.

You will need a PC running Windows 2000 Service Pack 4 or XP Service Pack 2, Windows Server 2003 with Service Pack 1, Windows 64 or Windows Vista. As this is a big download, ensure that you are up to date with your Windows Updates.


Written by GameProducer.





Q. What's in the  043 (june 2007) release? (See below for later releases, current is nov5, 051)
NeoAxis Engine 0.43 released!

- Ageia PhysX implemented
- Decals (only for static objects)
- Physics System: Continuous collision detection
- Physics System: Work of joints is improved (axises and limits). Bug fixes. Be attentive.
- Physics System: Work of motors is improved (geared and servo motors)
- Physics System: Static and dynamic frictions
- Physics System: The method of calculation of destruction joints is changed (for compatibility with PhysX)
- Physics System: It is allow to change contact group of shapes during simulation (Shape.ContactGroup).
- Physics System: Now RayCastResult is a structure. Be attentive.
- Physics System: RayCastResult: triangleID for Mesh shapes
- PhysicsDemo: Demonstration work of continuous collision detection
- PhysicsDemo: Demonstration of creation of destructible objects
- ODEPhysicsSystem: Simple continuous collision detection (see the documentation for the more information)
- WoodBox: Example of creation of destructible objects (PhysicsDemo)
- Configurator: Opportunity to choose physics library
- EntityType Editor: Option "Show invisible attached objects"
- EntityType Editor: Option "Filter attached objects by alias"
- Log: thread safe
- SDK: The source code of a Configurator is accessible
- OGRE 1.4.1
- MathEx: Class for generation of simple geometrical models (sphere, cylinders, capsules, boxes)
- Resource Editor: The tool for rotation axes of models. The button "Rotate axises".
- 3dsMax LEXIExporter: Adapted for the NeoAxis Engine (Correct export of axes)
- 3dsMaxExporter: Correct work with XmlConverter, more convenient export of materials, a grouping of geometry to smaller amount of subMeshes
- Documentation: The information on physics systems (ODE and PhysX)
- ComboBox: Correct display of the dropping out list at outside the limits of the screen
- Dynamic class: The code of copying of velocities to children from DieObjects is removed. Now there is property CopyVelocitiesFromParent in the attached objects.
- BlinkGrid class: Example of creation of dynamic geometry (see RenderDemo)
- Entity System: Tick the created object can be caused only on following Tick the world (earlier at once in this Tick)
- GridPathFindSystem: Now there is an opportunity to add in MotionMap objects without physical model
- HeightmapTerrain: A little more correct creation of geometry
- Bug fix: UISystem: Correct work with non round2 textures
- Bug fix: Incorrect Damage detection at compound objects (reception damage twice if the object has the attached objects).
- Bug fix: Attached sounds: Interruption not looped sounds at MapObject.Visible = false
- Bug fix: Resource Editor: Error at creation of a material
- Bug fix: Incorrect transformation of the attached objects (when there are local transformations)
- Bug fix: Entity System: Incorrect serialization of some fields (invalid work with default values)
- Bug fix: Incorrect work with bones in some models



http://www.neoaxisgroup.com

Price?

Free for Noncommercial, $100 for 1 title, if your team is <5, see 'license' for details, you could pay more but I didn't read that far.

Docs?

Neoaxis SDK (50MB) contains OGRE manual, source code.

Website:

http://www.neoaxisgroup.com

Recommendations on change of resources:

Try to create a new resource files. Try to not change resources presented in SDK.
So it will be easier to you to pass to later versions of a engine.
Good idea to create a specific directory for all your resources.
For an example a directory "\Data\Pinball". Add all your resources in it.
 

Recommendations on change of source code:

Try to write a new code. Try to change a code presented in SDK as small as possible.
So it will be easier to you to pass to later versions of a engine. Certainly, it is impossible to write only new a code. Often changes in existing will be necessary. Mark places of your changes. So it will be easier to pass to new versions of a engine.
Try to not delete a code presented in SDK.
He can be necessary for you in the future. Also the bad idea completely to rewrite assemblies GameGeneral.dll and Game.exe. Useful things contain many in them, and the general structure of any project is recreated.


The Map System is at core, an expansion of the entity system which allows you to positions entities in space, attach them to an appearance, work with physical models, and more. It is a set of algorithms which as a whole constitute the realization of your 3D world.

There are fundamental classes, such as the map (Map) and objects of a map (MapObject), which are expanded entities that lay down a top the map and provide functionality.

 
Map System: Attached Objects System
Description
Practically any object in the world have some material properties. Some objects have 3D model, some objects are visualized in the form of effects, and some objects only play sounds.

Principle is simple. Each object has the list of attached objects.

 

The Attached Objects System allows to attach various objects to entities:

Entities
You can attach any entity to other entities which makes it easy to create complex dynamic constructions. For example: you could easily attach a animated rotating machine gun mesh to a helicopter, and turn them into functioning machine guns. Such system would also allow the attachment of weapons or armor to characters.
Meshes
Particle systems
Billboards
Ribbon trails
Lights
In-game GUI
Sounds
Objects can be attached to bodies of physical model of object. They also can be attached to bones of 3D models.

 

Resource Editor

It is possible to set the attached objects by adjusting type. For this purpose it is very convenient to use Resource Editor. For work with the attached objects property of object AttachedObjects is used.

Look section Tutorials for examples of work with Attached Objects System.

 

Run-time

Besides adjustment of the attached objects in type, it is possible to adjust the attached objects in real time.

For example, when the player takes a gun, we attach the gun to a player in a real time.

 

Below are listed classes which can are attached:

Entities - MapObjectAttachedMapObject
Meshes - MapObjectAttachedMesh
Particle systems - MapObjectAttachedParticle
Billboards - MapObjectAttachedBillboard
Ribbon trails - MapObjectAttachedRibbonTrail
Lights - MapObjectAttachedLight
In-game GUI - MapObjectAttachedGui
Sounds - MapObjectAttachedSound
Helpers - MapObjectAttachedHelper
Example
Example of an attachment of particle system.

MapObject obj = ...;

MapObjectAttachedParticle attachedParticle = new MapObjectAttachedParticle();
attachedParticle.SetParticleSystem( "SmokeParticle" );
obj.Attach( attachedParticle );


Old Transformation

Ticks in the world occur to constant intervals. Usually 30 frames per second.
I.e. objects in the world can change the position only 30 times a second.

Frequency of updating of the frames on the screen can be more than 30 frames per second. That moving of objects were smooth, it is necessary to smooth their moving.

To smooth movement of object, data about transformation of the previous tick are used.

For smoothing moving object data about his transformation on the previous tick are used. Knowing the present and previous data about transformations of object, a engine interpolates position of object at its rendering.
The user interface system is a unified system for the creation of end-user controls, menus, dialogues, windows and HUD screens.

The workflow for this system is surprisingly simple. In the resource editor, the designer creates controls and game screens visually, and then places on them UI elements. Consequentially, the programmer (or level designer) uses the elements created by the designer. By writing new code or utilizing the logic system, the programmer can implement data and set event controls.

The UI class is a programming class which creates a basic element of UI management. Buttons, check boxes, and lists are examples of the UI class.

UI model is an object of one of the aforementioned base UI classes, which can in turn contain other UI objects. Specific instances of buttons, menus (containing a set of buttons), a window with options, and indivisible HUD screens are all examples of the UI model. In our resource files, UI models are presented with the .gui file extension.

Specific file format for UI model definition (.gui files)
Any UI model can be enclosed within another.
Example 1. - You can create a game menu which is a UI model. Next, you can create a framework, insert a heading and then place buttons (each separate UI models)
Example 2. - You can create a list (ListBox) and within its elements, place checkboxes, pictures and any other controls.
UI models inherit from UI classes or from other UI models. For example, you can create the design of basic button (built from the base class Button) and then modify and reuse the design for application elsewhere.
Base UI classes:
Control - the parent class of all UI classes. Allows you to define a name and to adjust the color and set a background texture.
Button
TextBox - control for a text output.
CheckBox
ComboBox
ScrollBar - horizontal or vertical.
ListBox
TabControl - bookmarks of pages.
EditBox
VideoBox (based on the Ogg Theora Video)
By inheriting from these base classes you can create and extend your own UI classes.
In-game GUI

Resource Editor: Description
Description
All files within the engine are resources, and are further divided by type.

The resource editor is intended for the centralized management, editing and creation of resources of various types.

The entity type editor (.type files)
Allows developers to fully configure all types of game entities, and to adjust attached objects visually through the created type.
The entity type editor is extendable due to its exterior dynamic linking assemblies.
Gui Editor
Particle system editor
Physics model editor
Model viewer that can change materials and view animation (.mesh and .skeleton file formats )
View textures
Listen to sound files
View video files
 Map Editor: Description
Description
The Map Editor is intended for map editing as well as the placement and adjustment of game entities. This is achieved through the adjustment of properties and further functionality can be extended through the logic system.

The editor is extendable due to its exterior dynamic linking assemblies.
Visual arrangement and editing of any game entities, such as: static objects, items, characters, light sources, etc. All objects can be edited by a level designer through properties, which programmers can provide.
The game logic editor allows developers to specify game logic within the limits of a map. Any entity can be expanded on through the logic editor. Visual and scripted development is supported.
The Map Editor is a full realization of the "What You See Is What You Get" toolkit design philosophy.
No compile times! Simply press "Run simulation" to instantly interact with your map!
Undo/redo support
Layers
Gizmo
 
3D Studio Max Mesh & Animation Exporter.
Supports Biped, Physique and Skin modifiers. Exports to XML so requires the use of the OgreXMLConverter.
Maya Exporter.
Exports animated meshes from Maya.
SoftImage XSI.
Mesh, animation and material exporter for Softimage XSI. Supports both skeletal and pose animation as supported by OGRE.
AC3D Mesh and Material Exporter.
Blender Mesh & Animation Exporter.
Exporter to take animated meshes from Blender to Ogre XML. Requires the use of the OgreXMLConverter.
LEXIExporter for 3D Studio Max.
A plugin exporter for 3D Studio Max written by ITE Aps.
Lightwave Converter.
Tool for converting Lightwave objects to OGRE meshes.
Milkshape 3D Exporter.
Exports meshes and animation directly from Milkshape 3D.
Wings3D Exporter.
Exports meshes from Wings3D to Ogre XML. Requires use of the OgreXMLConverter.
RenderMonkey Material Exporter.
Export materials and shaders from ATI's RenderMonkey to OGRE's material format.
The oFusion Kit for 3D Studio Max is your backstage pass for the most efficient work flow in game development.
http://www.ofusiontechnologies.com
 

Description
For creation of a map it is necessary to take following actions:

Create a new map by going to File ? New.
It is necessary to create an object of static geometry.
In the Entity Types window choose General ? StaticGeometry.
Click the screen when asked to make it.

 
In the Map Hierarchy window select object of static geometry. Double click on Map ? StaticGeometry.

 
Now it is necessary to add static model for an environment.
In the properties window go under "Items". There will be a button "...". Click it. A new window will pop up. Click "Add". It will create a new item with the property MeshName. Select "MeshName", and click the ".." button that appears. Select a mesh model from your directory. For example: "Models\Rooms\Rooms.mesh".
Click OK.

 
It is necessary to create three more objects. You'll need to create them via the "Entity Types" window similar to Static Geometry.
Static collision (General ? Collision).
A light source (General ? Light)
Spawn point (Special ? SpawnPoint).



 

Congratulations! Creation of a map is completed.


 
NeoAxis Engine Documentation  

Tutorial: Basic: Creation of a Static Object
Description
This tutorial will cover the creation of a new static object. We will use a stone for our example.

Creating a new static object will require us to do the following:

To import mesh created from an external modeling package, and
To create a new entity type.

We will use a model that has been created prior to our tutorial. We will use the following files: MyStone.jpg, MyStone.material, and Mystone.mesh.
 



 

Now it is necessary for us to create entity type:
Right-click the folder MyStone. An option should appear to create a new resource. Choose it.


 
You will have the option to choose what the new resource will be. Choose "Entity Type".


 
You will then need to choose what the class of the entity will be. Choose "MapObject". Classes determine the behavior of object types. MapObject signifies simple entities, such as placeables, and includes static objects.


 
That should create a new "type" in the resource editor. Right-click MyStone.type, and select edit. That should activate the properties window to the right as well as the viewing window in the center, signified by the yellow border.

 
We must now attach a visual mesh to our type. Under MapObject ? AttachedObjects select the "...".

 
This should open a new wizard to add meshes to the object type. Select "Add". Then under Mesh ? MeshName select the "...". You can then either browse for the correct model, or click cancel and just type in "Types\StaticObjects\MyStone\MyStone.mesh".

 
Now it is necessary to adjust some properties:
Set PhysicsToCollision to true. This says that the object gets physics and collision from the model.
Set AllowEditorCreate to true. This says that the object can be created in the Map Editor.
 


 

 

 

Congratulations! Creation of a static object is completed.

Now you can open Map Editor and create there many stones!
 



 


--------------------------------------------------------------------------------

Copyright 2006-2007 NeoAxis Group

 
 
NeoAxis Engine Documentation  

Tutorial: Basic: Creation of a Dynamic Physics Object
Description
For studying this tutorial you should be able to create simple static objects.

 

This tutorial will cover the creation of a new dynamic object. We will use a windmill for our example.

Creating a new dynamic physics object will require us to do the following:

To import meshes created from an external modeling package.
To create a new entity type.
To create a new physics model.

The windmill consists of two parts: tower and fans. Each part will be presented by one model and one physical body. The tower will be static object and fans will be connected to it.

We will use a models that has been created prior to our tutorial. We will use the following files: WindMill.jpg, WindMill.material, WindMill.mesh, WindMillFan.png, WindMillFan.material and WindMillFan.mesh.

Do the followings to create the Dynamic Windmill:

Let's create new type and name it "WindMill" and a class "MapObject".

 
Attach to ".type" model of a tower.

Now we create physical model. The physical model is necessary to create dynamic physical constructions.
Let's name it "WindMill". The received file will be called "WindMill.physics".

Now you can see the new resource called "WindMill.physics". We shall pass it in the editing mode.
The body is created as a box shape. Lets rename it to "bodyMain". This body will be the main structure of the physical model and will be associated with the tower mill.

Now it is necessary to create the shape for "bodyMain". Open "Shape Collection Editor" by pressing on ".." under "Shapes" property. Remove automatically created Box shape.

Add the new shape "MeshShape". The Meshshape allows you to create the physics geometry from a model.


Choose under property Material "MeshName" the tower's model "WindMill.mesh". After you press OK, you will see a silhouette of the tower.

Now we need to make the body static. We the property "Static" in true.
The creation of the tower's body is complete.

Now, we need to attach the physical model in type. Edit "WindMill.type" in property "PhysicsModel" with the physical model created by us "WindMill.physics".

Click on "Show physics" checkbox at the bottom right. Now we see the tower's model and the physical model together.

Now we shall begin creation of fans for the mill. Fans represent a dynamic physical body. The body is connected with a body of a tower by means of a joint.
Let's pass in a mode of editing of physical model. Simultaneously to observe models and physical models is to open type "WindMill.type" and to press the button "Edit Physics Model".
Do right-clicking the mouse, and in the context menu choose, "Create Body".

The body is created. Select body and right-click the mouse. In the context menu choose "Create Box Shape" to create the Box shape.
Earlier we created the shape by means of "Shape Collection Editor", and now have created by means of the context menu. Differences are not present. You can create shapes in the way most convenient for you.

Create two shapes reminding fans. In a revealing property we can see two Box shapes.

Rename the body in "bodyFan". In the future we shall use this name, for an attachment of the model to fans the body.

Now attach to ".type" WindMill.type models of fans. For this purpose pass to editing type. Open the property "AttachedObjects" dialogue of the attached objects. Add model and we choose help of property "MeshName" model of fans. Further we shall enter a name of a body "bodyFan" into property "Body". It is necessary that the model of fans moved together with the physical body of fans. Press OK.

Now you can see, that the model of fans is located in a position of a physical body "bodyFan".

Now pass to editing physical model. Adjust a body of fans. In total at us it has turned out six boxes. Since its less used form, the processing of physics will work more quickly.

Now it is necessary to connect two bodies in a uniform construction. It is necessary to create a joint which will rotate on one axis. For this purpose approaches "Hinge" joint.
Let's move a body of fans to that place where they should be. Select both bodies and press the right button of the mouse. In the context menu choose "Create Hinge Joint".

Move the created joint to the necessary position. The yellow line at a joint is an axis of rotation.

To check up the created physical model it is necessary to press button "Simulate". Also, in a simulation mode it is possible to pass having pressed "space" key.
You can give to bodies an additional impulse. For this purpose, press the mouse button above a body and while holding it move your mouse.

Its time we turn the mill's fans and we will use motors.
Select a joint and right-click your mouse button. In the context menu choose "Create Geared Motor At RotationAxis 1". Geared motors are intended for addition of force to axes of joints of rotating type.

Let's adjust the parameters of the motor.
Now we can start start simulation. See the fans rotate!

Return back to editing .type and set property "AllowEditorCreate" in true.

Congratulations! Creation of a dynamic physics object is completed.

Now you can open Map Editor and create a windmill!
 
NeoAxis Engine Documentation  

Tutorial: Advanced: Creation of an Entity Class

Description
Creation of a new class will be now considered.

The special kind of spheres which change the form at damages, will be created. Easier speaking, the material of model changes, when the object is damaged.

 
Here that it is necessary to make:

To create the entity class.
To create type on the basis of this class and configurate it.
 

Creation of a class.
Let's open Game.sln via a IDE (Microsoft Visual Studio). We shall come into assembly GameGeneral and we shall create there a new file with class ExampleMagicObject. Assembly GameGeneral is intended for creation of the game entity classes.

So our class will looks ExampleMagicObject.cs:
using System;
using System.Collections.Generic;
using System.Text;

namespace GameGeneral
{
    public class ExampleMagicObjectType : DynamicType
    {
    }

    public class ExampleMagicObject : Dynamic
    {
        ExampleMagicObjectType _type = null; public new ExampleMagicObjectType Type { get { return _type; } }
    }
}
We see two classes:
ExampleMagicObjectType is a class of entity type.
ExampleMagicObject is a class of entity.


Also a little bit frightening line:

ExampleMagicObjectType _type = null; public new ExampleMagicObjectType Type { get { return _type; } }
It is necessary simply and quickly to address to type of object. The system itself initializes this field. (Field necessarily should be have a name "_type").
 

Now we shall set up logic of work of object:
using System;
using System.Collections.Generic;
using System.Text;
using Engine.MathEx;
using Engine.Renderer;
using Engine.MapSystem;

namespace GameGeneral
{
    public class ExampleMagicObjectType : DynamicType
    {
        [FieldSerialize]
        string blinkMaterialName;

        /// <summary>
        /// Gets or sets the name of a replacing material.
        /// </summary>
        public string BlinkMaterialName
        {
            get { return blinkMaterialName; }
            set { blinkMaterialName = value; }
        }
    }

    public class ExampleMagicObject : Dynamic
    {
        ExampleMagicObjectType _type = null; public new ExampleMagicObjectType Type { get { return _type; } }

        MeshObject blinkMeshObject;
        string originalMaterialName;

        protected override void OnPostCreate( bool loaded )
        {
            base.OnPostCreate( loaded );

            //To find the first attached mesh
            foreach( MapObjectAttachedObject attachedObject in AttachedObjects )
            {
                MapObjectAttachedMesh attachedMesh = attachedObject as MapObjectAttachedMesh;
                if( attachedMesh != null )
                {
                    blinkMeshObject = attachedMesh.MeshObject;
                    break;
                }
            }

            //To save the original name of a material
            if( blinkMeshObject != null )
                originalMaterialName = blinkMeshObject.SubObjects[ 0 ].MaterialName;
        }

        //This method is called when the entity receives damages
        protected override void OnDamage( Dynamic prejudicial, Vec3 pos, float damage )
        {
            base.OnDamage( prejudicial, pos, damage );

            if( blinkMeshObject != null )
            {
                //To change a material
                if( blinkMeshObject.SubObjects[ 0 ].MaterialName == originalMaterialName )
                    blinkMeshObject.SetMaterialName( Type.BlinkMaterialName );
                else
                    blinkMeshObject.SetMaterialName( originalMaterialName );
            }
        }
    }
}
Property BlinkMaterialName will be accessible in the Resource Editor.

The field blinkMaterialName has an FieldSerializeAttribute attribute. It will allow to serialize data. (see Entity System: Serialization).

Property AttachedObjects allows to receive the list of the attached objects.


The entity class is created. Compile the project.
 

Now it is necessary to create type (.type resource) which will use this class.
You already should have an experience of creation of entity types.

We shall create type with name ExampleMagicBall.
At creation of type it is necessary to specify our class ExampleMagicObject.

Now we shall configure type.
You can see new property BlinkMaterialName. This property of our class of type.
Let's set a name of a material as TransparentExample.
-----
Further it is necessary to attach a mesh and to set physical model.
Let's attach mesh with a name "Types\Dynamic\Ball\Main.mesh".
Name of physics model we shall set as "Types\Dynamic\Ball\Ball.mesh".

Congratulations. Creation is completed.
 
Now create objects ExampleMagicBall in the Map Editor and start simulation.
Shoot at object. He will change the kind.

Q. How do I see textures in the resource editor?


A. To see textures, include full path to texture:

material Dynamite
{
technique
{
pass
{
texture_unit
{
texture Types\Items\Dynamite\Dynamite.jpg
}
}
}
}

I had to reinstall the Net framework and Neoaxis before I could see any,
actually I wiped my HD, but you might not want to..


Any suggestions for an ideal file setup? I guess either keep the textures in the same folder as the materials or keep them in a sub-folder within the materials folder? Can I use a relative path if that's the setup?

You can study structure of directories and files in a demo.
Files are grouped by entity types.
Shared files for several objects are taken out in separate folders.
Resources specific to maps - lay in folders of maps
    

Q. when i use exported meshes (from 3dsmax) they appear with an
enormooouus size in neoaxis.

thats no problem, as far as i can specify their scales in the .type files.
...means: as far as i actually want to USE the meshes as types.

but when i have to use a mesh as static geometry, it would still appear
TOTALLY OVERSIZED big. and it seems, i can`t scale the static geometry
itself later.


[quote]commit your translations[/quote]
He means 'Apply size and rotation' in Blender (CTRL-A) No idea
why this command exists, why would I kid about scaling and rotation?

In Max there's something called 'Reset Xform' that is similar I think, it's a utility, in the hammer icon area.

Try to make before export "Editable Mesh" and reset XForm.

You can get the right size in Blender by importing a .mesh file, it will be flipped on an axis but the right size I think.

Perhaps you could export .obj or 3ds from Blender into Max?

SOLVED, rotating the scene and exporting in .3ds and converting with 3ds2mesh toolkit.

ok.. the "mystery" is solved:

when you scale the object with its vertices selected you get
absolute size changes also in neoaxis.

(umm, i`m not mainly a 3d modeller, by the way.. )
  
 Q.have a problem with ofusion exporter.
as i saw in other posts there are some axes difference between ofusion exported scene and neoaxis static geometry.
In neoaxis:
Axis X is forward,
Axis Z is upwards.
for this reasons my exported scene is wrong..

Q. where can i get 3ds2mesh though?

http://www.ogre3d.org/wiki/index.php/3DS2Mesh

as far as i tried (and i tried a lot yet), exporting with lexi ALWAYS produces a wrongly rotated model :/ i don`t get, where i`m making mistakes..

using ofusion (which sure has some other issues) i figured out, that, in 3dsmax, you have to rotate the PIVOT point of the model(s) ("affect pivot point only" checked) for "X: -90" before exporting.
then everything shows up correctly in neoaxis! Smile

the pivotpoint-rotating doesn`t affect the (still wrong) angle which occours using lexi.

I had to reset xform in 3ds before export

Q. What are portals and zones?

A. For each room need create a zone.
Adjoining zones (rooms) should be a little overlapped.

Portals be two types. indoor and outdoor. (it is set in "Outdoor" property).

indoor portals connect two zones. These are portals between two zones. For example internal holes between rooms.

outdoor portals connect one zone and outdoor space. These are external doors and windows.
Arrows outdoor portals should look outside (i.e. from a building).
For valid outdoor portal, should be in volume of a zone.

The portal should cover dimensions of a hole(window or door). (for round windows or other)
    
Q.Hi all,
I'm a computer science student, for my final exam i have to do a simulation of fire in my school and i decided to use NeoAxis, i've imported the scena from 3ds and it work correctly, now i'd like to do a deck with drawers. the drawer must open when you click on it.
After seeing BooleanSwitch in Resource Editor I thought to do a similar object for my drawer.
a BooleanDrawerON mesh for the "open" animation and a BooleanDrawerOFF for the "close" animation.
is this the right way to do this thing? any suggestion is welcome

another question:
I've done open and close animation with autokey and a traslation in 3ds but i don't know how to "import" the animation in resource editor.
how can i do this thing?

thank you all

A. 1. It is necessary for you to export model with already appointed animations.
You should see the list of animations in Resource Editor.
Creation of animations and their names is a task of a modelling package and the exporter.

2. BooleanSwitch - your choice. It is necessary to add a code of play animation in file BooleanSwitch.cs (need override method OnValueChange).

Look class GameCharacter.cs, method TickAnimations, method SetCurrentAnimationState for an example of play animations.

Q. (followup)
I've look at BolleanSwitch (i've understood it) and GameCharacter as you told me but i really don't understand the last one and how to do an animation... can you tell me an example based on TickAnimations and SetCurrentAnimationState?
Thank you ever so much for your help!!

A. folowup.So. you have object MapObjectAttachedMesh. (the attached mesh to object).

For BooleanSwitch it is possible to find it here:
Code:  ‹ Select › ‹ Contract ›

BooleanSwitch s = ...;
string alias = s.Type.TrueValueAttachedAlias;
MapObjectAttachedMesh attachedMesh = s.GetAttachedObjectByAlias(alias);

or find from list of attached objects (property MapObject.AttachedObjects)

Play animation code:
Code:  ‹ Select › ‹ Contract ›

MeshObject.AnimationState animationState = attachedMesh.MeshObject.GetAnimationState("myAnimation");
attachedMesh.SetCurrentAnimationState(animationState, 1.0f, false);

my final solution is without animation but works for me. I'll write the code of my solution for who has the same problem Smile
I've created a new type of objects: MoveSwitch with a MoveCoefficient that indicate how to move and 3 booleans x, y, z... the axis where to move.
this is my code:
MoveSwitch.cs

Code:  ‹ Select › ‹ Contract ›

using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
using Engine.EntitySystem;
using Engine.MapSystem;
using Engine.MathEx;

namespace GameGeneral
{
    /// <summary>
    /// Defines the <see cref="MoveSwitch"/> entity type.
    /// </summary>
    public class MoveSwitchType : FloatSwitchType
    {
        [FieldSerialize]
        [DefaultValue(1.0f)]
        float moveCoefficient = 1;

        [DefaultValue(1.0f)]
        public float MoveCoefficient
        {
            get { return moveCoefficient; }
            set { moveCoefficient = value; }
        }

        [FieldSerialize]
        [DefaultValue(1.0f)]
        Boolean xAxe = false;

        [DefaultValue(false)]
        public Boolean X
        {
            get { return xAxe; }
            set { xAxe = value; }
        }

        [FieldSerialize]
        [DefaultValue(false)]
        Boolean yAxe = false;

        [DefaultValue(false)]
        public Boolean Y
        {
            get { return yAxe; }
            set { yAxe = value; }
        }

        [FieldSerialize]
        [DefaultValue(false)]
        Boolean zAxe = false;

        [DefaultValue(false)]
        public Boolean Z
        {
            get { return zAxe; }
            set { zAxe = value; }
        }

    }

    /// <summary>
    /// Defines the parametrical switch which move the <see cref="Switch.UseAttachedMesh"/>.
    /// </summary>
    public class MoveSwitch : FloatSwitch
    {
        MoveSwitchType _type = null; public new MoveSwitchType Type { get { return _type; } }

        protected override void OnValueChange()
        {
            base.OnValueChange();

            if (UseAttachedMesh != null)
            {
                float move = Value * Type.MoveCoefficient;
                Boolean x = Type.X;
                Boolean y = Type.Y;
                Boolean z = Type.Z;
                if(x == true)
                    UseAttachedMesh.PositionOffset = new Vec3(move, 0, 0);
                else if (y == true)
                    UseAttachedMesh.PositionOffset = new Vec3(0, move, 0);
                else if (z == true)
                    UseAttachedMesh.PositionOffset = new Vec3(0, 0, move);
            }
        }
    }
}


thank you for help, see you next time
    

Q. I've been trying to load an existing height map for a heightmap terrain entity, but there's no such option in the properties of the terrain... It would be nice if you could load an existing heigtmap to the terrain and then be able to modify it using the height and texture modifiers included in the map editor

A. http://terrymorgan.net/neo_terrain.zip

2 MB

The process is clunky, you have to 1st initiate
a new map 'mymap.map' with heightmapterrain, Neo makes a
default heightmap.raw in a directory called
/maps/mymap, then you save/quit the editor and copy
your heightmap.raw over the one Neo made, then
restart the editor.

http://terrymorgan.net/neofaq.htm


Q.but if you have two or more materials with the same name the Resource editor gives a fatal error and you have to modify each material manually[/quote]

A. Yep, what I do is 'SEARCH' through all my
Data directories when I get that error, then reload
the duplicate mesh/material name into Blender or 3ds_max and
change the material name to something different.
This isn't a bug, it's how Ogre only loads a resource once.


Q. What's with this Logic Editor?

A. (By Richard Kain)The Logic Editor is accessed throught the Map Editor. It is under the menu option "World." Once selected, the Logic Editor pops up as its own separate window. At the moment, the Logic Editor is broken up into the Class List, and the Output Window. I'm not exactly sure what the purpose of the Output Window is at the moment, and haven't used it myself. The Class list is where new scripts (classes) are constructed.

To create a new class right click the "Map Classes" option in the Class List. The New Class dialog box appears. You have to give your new class its own distinct name. Make sure it is descriptive, so that it won't be the same as a class that NeoAxis already uses. NeoAxis doesn't like duplicate classes. (or types, or materials, or pretty much diplactes of anything) Once you've chose an appropriate name, you have to pick what Type your new class will be. The two options are "static" and "entity". I haven't used static classes yet. But entity classes are designed to be used with pre-existing game entities. If you choose the "entity" option, you will also have to choose the "entity class type." This option defines which entity type this class is supposed to be used with. For the sake of argument, lets go ahead and pick "GameMap."

Now you have your own fresh new class. Of course, it doesn't actually do anything right now. If you right-click your new class, you will get a little sub-menu that tells you what you can do with it. The options we're interested in at the moment are "Create Method" "Create Variable" and "Create Custom Script Code." Create Method will allow you to add functionality to your class. Creating Variables obviously allows you to add information to your class. I'm not sure how Custom script codes work, as I'm not especially strong in programming. If you go to Create Method, you get more options.

I'm not going to go through all of these different options, as they are different for each separate entity class. If you just create your own basic method, you can add whatever you want, but the method itself will have to be called somewhere else in order for it to actually do something. If you use the pre-built "event" methods, the code you add to them will be executed when the event they describe occurs. Using the pre-built methods is a good way to get things up and running quickly. If you use the Event Create method for the GameMap entity type, the code you add to it will be executed when the map is created. (in other words, when the game engine loads the map) Using this method is a good way to start off code, and can be good for creating loading screens or introductory sequences.

When you create one of these new methods, you have to choose between script type and designer type. Script type will have you typing everything yourself. If you are very familiar with the API, than this is probably the fastest way to get your code down. Designer type is more visually based, and provides lists and prompts for you to browse through. Use this if you don't know much about the API yet, and need to get your bearings. For beginners, I would definitely suggest designer type.

If you selected designer type editing, you will be presented with an actions list. This is where you create the actions that will be exectued when the script is run. There is an add actions button and a delete actions button. Their purpose is self-explanatory. From here on out, its all programming. If/Then statements, variable declaration, Logic delays, and managing the various entities in your map. I won't go any deeper into it at the moment.

See RagdollDemo, PhysicsDemo - for examples.
See CutSceneDemo. It is an example of creation of consecutive scripts. For example cut scenes.
    

Q. I never did shaders before except looking at NeoAxis normal bump map at Orge model in .material.

Also, I didnt use shaders in 3ds max, only texturing, normal map, lighting..

If I apply shaders in 3ds max to my object, will it work in NeoAxis? or NeoAxis use special shader langauge?

<------- (no experince in shaders at all) Rolling Eyes

thanks!

*I am trying to make texture animation in a model (for example, the movie "The Matrix") I dont know how this will work if I use shaders to do the job.
    
A. (By Alexander) Susan, there are applications designed for creating and testing out shaders such as RenderMonkey and FXComposer. Any shader that you write like this needs to be "converted" to Ogre's way of doing things which you can do manually or with a program (there are a few Ogre projects like this floating around). The alternative would be to write the shaders directly inside some sort of Ogre Material creator of which several are in the works.

The best way to write shaders is to write it manually.
Because - this gives the maximal control and understanding of job.
It conducts to the best productivity.

Automatically created shaders in 3dsMax or RenderMonkey, suit only trial design. In the further they are better for correcting manually for the best job.

From here a conclusion. If wish to learn to create new materials - learn to write shaders.

imho.

In the future I wish to realize the editor - in which it will be possible to assembly different pieces of shaders in one. For designers. I.e. the editor will represent the scheme. Each block of the scheme will be shader.

*I am trying to make texture animation in a model (for example, the movie "The Matrix") I dont know how this will work if I use shaders to do the job.

It can be made on ffp (without shaders). Look Ogre Documentation which is in SDK.

Q.I'm trying to add a building that I can enter and
leave (zones and portals?) to a Heightmap Terrain map, I can add the Garage1 in the Static Geometry
entity, but it sits at 0 0 0 it looks like, but it's not selectable Your
Terrain Demo has a 'Data.mesh' building, how
do you move the buildings into position, and can
zones/portals be used with Heightmap Terrain maps? My idea is to make a 'Cave' building you
enter and change level to a cave interior .map.

A.Static geometry has to be positioned in the 3D program.

I have complained about this but was assured this was done intentionally.

In my opinion, there is no reason not to be able to position (or even rotate and scale) static geometry.

IVAN: Yes it is correct. I have purposely forbidden an opportunity to set position of static geometry. If at you the set of identical objects - is better for making that .type object and place it on a map.

You can make .type object or completely load static geometry from 3D package.
    
IN ENGLISH- this means you have to make buildings like the RTS factories, these are 'types' which are avaliable from the Enitity List in the editor, don't know if you can actually enter these buildings, OR

Make the buildings in say Blender as single items, then F1 Append them to your Terrain (NOT heightmap terrain) but RTS demo 3d mesh. Then you add them to the map, study the FPS demo, then put in the zones and portals.

I could put the RTS factory on the heightmapterrain because it was a type.


hello, when open map editor or resource editor a error tell me; Render initialization errors:
Unable to compile Cg program Ogre/Compositor/Combine fp_:cg error:The compilereturned an error.
(12)error C6029,C65054, etc... can help me please?
I think i im wrong way in the instalacion of OGRE; What can i do?

Possibly your videocard does not support shaders or incorrectly compiles it.
Try to switch-off shaders in a Configurator.

Q. '.type' buildings like the RTS factory, they can be added to the HeightmapTerrains, could I make a hollow building
that you could enter and exit into a .type and
load it into the HeightmapTerrain? Or would it
need zones and portals?

A.Yes. zones and portals only for culling geometry (for perfomance).

By the way.
At present mesh geometry of ".type" objects, is not split on a pieces (as it makes StaticGeometry and Terrain).
I.e. if you see a part of object, he is completely rendered in a videocard.
In the future it will be realized for "static" .type objects.


'm new and I like the NeoAxis Engine....

My problem is very strange, the SDK and the Demo don't work. I open the EXE (for example demo.exe) and after some loading appear the follow small error window:
neoaxisengineerrormn2.jpg


A.Try to switch-off shaders in Configurator.
You videocard are supported not all necessary shaders.

Possibly engine incorrectly detect characteristics of your videocard.

Q.I try add weapon and established:
Colt45GunItem.type
Colt45Gun.type
Colt45GunBullet.type
Colt45GunBulletItem.type

Run game, I can see it but can't take it, I how should do, please help, thanks.



A. At you types are correctly created?

Colt45Gun.type - is a gun

Colt45GunItem.type - is a gun item (which can be taken).
gun item should have "class = WeaponItem".
Most likely here your problem.

At present to replace a class in Resource Editor it is impossible. It is possible to create new type or to edit .type in notepad.

Look Data\Types\Items\WeaponItems\SubmachineGunItem for an example.

Q. follow-up-

Each matter my checks are all correct

Code

Colt45Gun.type:

type Colt45Gun
{
class = Gun
reloadTime = 1
soundReload = "HWHS_SP\\Types\\Item\\WeaponsItem\\Colt45\\Reload.ogg"
soundEmpty = "HWHS_SP\\Types\\Item\\WeaponsItem\\Colt45\\Empty.ogg"
fpsMeshName = "HWHS_SP\\Types\\Item\\WeaponsItem\\Colt45\\Colt45Gun.mesh"
allowEmptyName = False
normalMode
{
bulletType = Colt45GunBullet
bulletCapacity = 3000
magazineCapacity = 30
dispersionAngle = 3
betweenFireTime = 0.1
soundFire = "HWHS_SP\\Types\\Item\\WeaponsItem\\Colt45\\Fire.ogg"
startOffsetPosition = "1 0 0"
fireObjects
{
light
{
diffuseColor = "1 1 0.4"
specularColor = "1 1 1"
attenuationRange = 5
attenuationConstant = 0
attenuationLinear = 0.2
attenuationQuadric = 0.5
powerScale = 1.5
castShadows = False
position = "1 0 0"
attachToOwner = True
lifeTime = 0.04
}
}
}
alternativeMode
{
bulletCapacity = 1000
betweenFireTime = 0.7
startOffsetPosition = "1 0 0"
}
influenceSlotNames
{
}
attachedObjects
{
mesh
{
meshName = "HWHS_SP\\Types\\Item\\WeaponsItem\\Colt45\\Colt45Gun.mesh"
castShadows = True
rotation = "-0.7071068 0 0 -0.7071068"
scale = "0.1 0.1 0.1"
}
}
}


Colt45GunItem:

type Colt45GunItem
{
class = WeaponItem
weaponType = Colt45Gun
bulletType = Colt45GunBullet
bulletCount = 1600
defaultRespawnTime = 10
soundTake = "HWHS_SP\\Types\\Item\\WeaponsItem\\Colt45\\Switch.ogg"
allowEditorCreate = True
networkType = Network
influenceSlotNames
{
}
attachedObjects
{
mesh
{
meshName = "HWHS_SP\\Types\\Item\\WeaponsItem\\Colt45\\Colt45Gun.mesh"
castShadows = True
rotation = "-0.7071068 0 0 -0.7071068"
scale = "0.1 0.1 0.1"
}
particle
{
particleName = ItemParticle
}
}
}


Colt45GunBullet:

type Colt45GunBullet
{
class = Bullet
damage = 5
impulse = 100
networkType = Network
influenceSlotNames
{
}
dieObjects
{
particle
{
particleName = FireParticle1
}
}
}



Q.
I use Microsoft Visual C # 2005 to debug, See the PlayerCharacter.cs -> Type.Weapons.Count still was 3 [SubmachineGun, Shotgun, Hammer], does not have colt45. What place was I wrong?

A.
Precisely!
Add the weapon for a unit. Open Rabbit.type. Property "Weapons".

Quote:  ‹ Select › ‹ Expand ›
1. Will you be integrating OIS or providing support for gamepads and other input devices yourself?

2. What is the plan for non-superficial multi-threading implementation? Is the upcoming physics engine going to be in a separate thread? What about resource loading, rendering, networking and sound?

3. Have you decided on a library for networking? Where does this fall in the time schedule?


It is planned.
Concrete dates of releases I can't give.

Quote:  ‹ Select ›
4. How are licenses such as Ogre's OUL, or Raknet, or FMOD licenses going to be handled? Sub-licensing or do the developers need to deal with the library authors themselves?

At present it is necessary to get the license separately from NeoAxis.

Possibly in the future licenses for the basic libraries will be purchased and they included into cost of a NeoAxis.

Quote:  ‹ Select ›
5. What sort of asset authoring support will be offered for PhysX? For example how would cloth simulation be set up?

To make I shall support cloth quickly enough. It is necessary to have source licence for this purpose. It will be necessary to bring the interface of work with cloth in NeoAxis Physics System.
Also I plan to make support cloth.

Quote:  ‹ Select ›
6. Is some sort of NAE shader library planned? There are some great .FX shaders on the NVidia site that could probably ported to Ogre with very minimal work and they have a great liberal license.

I plan to borrow actively of render in the near future. (HDR, lightmaps, more shaders, more lights and etc)

It will not be probable that .fx to be supported in engine.

Quote:  ‹ Select ›
7. Is support for pose animation planned from within the editors?

At present it is not planned.
You can import pose animations from other editors.

Quote:  ‹ Select ›
8. Is there going to be a custom format besides zip supported by the engine?

It is planned.

Quote:  ‹ Select ›
9. Are there plans for some sort of content delivery system (Openfrag, Steam, Ea's, etc)?

It is specific enough functionality.
Possibly it will not be supported by a engine directly.

Quote:  ‹ Select ›
11. Will it be possible to utilize flash to create .swf files for GUI interaction?

No. Such support will not be.
Once I worked with .swf for one game project. Bad experience.

Such answers hope to you enough.


Q. hi again,
i've created a new type of object that when click on it the player get the object and the name is saved in mapresutls... do you remember it? Very Happy
this is the code:

Code:  ‹ Select › ‹ Contract ›

namespace GameGeneral
{
    /// <summary>
    /// Defines the <see cref="MoveSwitch"/> entity type.
    /// </summary>
    public class OggettoType : FloatSwitchType
    {
       

    }
   
    /// <summary>
    /// Defines the parametrical switch which move the <see cref="Switch.UseAttachedMesh"/>.
    /// </summary>
    public class Oggetto : FloatSwitch
    {
        OggettoType _type = null; public new OggettoType Type { get { return _type; } }
 
        protected override void OnValueChange()
        {
           
            base.OnValueChange();

            if (UseAttachedMesh != null)
            {

                UseAttachedMesh.Visible=false;
                MapResults.InserisciOggetto(UseAttachedMesh.Alias);
           
            }
        }
    }
}

all works well but i'd like to remove the white box when the object disappear



No problem.

You need remove this code in ActionGameWindow.cs.
Line 534.

Code:  ‹ Select › ‹ Contract ›

DebugGeometry.Instance.Color = new ColorValue( 1, 1, 1 );
if( overSwitch.UseAttachedMesh != null )
{
   DebugGeometry.Instance.AddBounds( overSwitch.UseAttachedMesh.SceneNode.
      GetWorldBounds() );
}
else
   DebugGeometry.Instance.AddBounds( overSwitch.MapBounds );



Q. thank you Ivan, another question, is it possible to count the number of object type "oggetto" in the map?

Yes.

1. You can make the counter of objects.

2. To find objects. This code enumerate objects of a map.

Code:  ‹ Select › ‹ Contract ›

foreach( Entity entity in Map.Instance.Childs )
{
   Oggetto obj = entity as Oggetto;
   if( obj != null )
   {
      ...;
   }
}

Q. Does the Lexi Exporter has compatibility with 3D Studio Max 9?
A. no, but using the old method (copy & paste 3ds max exporter script to 3ds max 9 will work) follow the installation instructions. you simply run the script in 3ds max then create an icon in 3ds max and drag the script to the icon, then you simply click the icon whenever you're ready to export something. The script from 0.43 release doesn't seem to work for a strange reason, I tried fixing it but it won't work) download 0.42 release to get the script from there then paste it in 3ds max 9 script folder. it works fine with me when I sent my files to neoaxis 0.43 release.



Q. (about physx ageia physics plugin and fmod sound plugin )How do I know what I'm using? it looks like
fmod is one of the default sound drivers, how do I delete the stuff that costs money?


A.This is what I did.

Run Configurator and set the Physics system to ODEPhysicsSystem.dll and set Sound system to OpenALSoundSystem.dll. Then go to the folder where NeoAxis is installed and delete FMODSoundSystem.dll, fmodex.dll, PhysXPhysicsSystem.dll, PhysXLoader.dll, and the PhysXDlls folder.

Everything still seems to work fine for me, so I guess it's ok



An insight of the engine.config file in the \bin\Configs directory:

{
   renderSystemName = "Direct3D9 Rendering Subsystem"
   maxPixelShaders = NoLimitation
   maxVertexShaders = NoLimitation
   fullScreenAntialiasing = 0
   filtration = Trilinear
}
PhysicsSystem
{
   physicsSystemName = ODEPhysicsSystem.dll
}
SoundSystem
{
   soundSystemName = OpenALSoundSystem.dll
}



True.

+ It is necessary as to set default sound library.
File "Data\Definitions\SoundSystem.config".

"Configs" directory can be removed at any time. If it is not present, initial data will be taken from files "Data\Definitions\*.config".




PhysX is FREE on all but XBOX. FREE!!! $50,000 for XBOX development. Here are the details from Ageia.

Costs

At present, the following two options are all that are available. We will likely never provide any sort of royalty-based license. Open-source usage is limited only to the most middleware-friendly license model--in other words, we retain full ownership and rights to our own IP, and what you ship of ours will still be specified by contract.

Free:

* Commercial & non-commercial use on PC
o Must keep registration information currect
o Must agree to the EULA at the time of download (pops up, but is copied below)
o Available for Windows & Linux (soon)
o No PhysX HW support requirement
* PS3 platform (through Sony pre-purchase)
* All platforms through some of our middleware partnerships, such as UE3, Gamebryo 2.2, and others

$50k per platform:

* Xbox 360
* Fee may be waived at our discretion for multi-platform developers providing PC HW support
* Fee may be waived at our discretion for some Tools & Middleware providers


Q. A nice thing to implement would be a map loading screen type,
an object that is stored in the map file and that is rendered
at loading of a map, so each map could have a custom loading screen.


A.
t is possible.

At present gui loadings it is file - MapLoadingWindow.gui.

To make the gui loadings it is necessary:

1. To create a special .gui for your map.
2. To load your .gui during work
Open file GameEngineApp.cs, method MapLoad.

It is necessary to change this code of loading .gui:
Code:  ‹ Select ›
   
mapLoadingWindow = ControlDeclarationManager.Instance.CreateControl("Gui\\ MapLoadingWindow.gui");



Q. How can I get the access to all entities(or MapObjects) which exist on scene? Or can I get entity by name?

A. It's simple.

Enumerate all MapObject's:
Code:  ‹ Select › ‹ Contract ›

foreach( Entity entity in Map.Instance.Childs )
{
   MapObject obj = entity as MapObject;
   if( obj != null )
   {
      ...;
   }
}


Enumerate all entities:
Code:  ‹ Select › ‹ Contract ›

foreach( Entity entity in World.Instance.Childs )
{
   ... here need recursive enumerate all entity.Childs.
}


Get entity by name:
Code:  ‹ Select ›

Entity entity = Entities.Instance.GetByName("MyGreatObject");


Q. More a question than a request: is it planned to add serialization for generic List<T> types in the Map Editor?

I refer to something as the following:

Code:  ‹ Select › ‹ Contract ›
// Copyright (C) 2006-2007 NeoAxis Group
using System.Collections.Generic;
using System.Drawing.Design;
using System.ComponentModel;
using Engine;
using Engine.MapSystem;

namespace GameGeneral
{
   public class SpawnTriggerRegionType : RegionType {}

   public class SpawnTriggerRegion : Region
   {
      [FieldSerialize]
      List<UnitTypeItem> units = new List<UnitTypeItem>();
      [Editor( typeof( UnitTypeCollectionEditor ), typeof( UITypeEditor ) )]
      public List<UnitTypeItem> Units { get { return units; } }

      /*
      Below the usual classes for CollectionEditor...
      //*/

      public class UnitTypeItem
      {
         [FieldSerialize]
         UnitType unitType = null;

         public UnitType UnitType { get { return unitType; } set { unitType = value; } }

         public override string ToString()
         {
            if( unitType == null )
               return "(not initialized)";
            return unitType.Name;
         }
      }

      [EditorBrowsable( EditorBrowsableState.Never )]
      public class UnitTypeCollectionEditor : PropertyGridUtils.ModalDialogCollectionEditor { public UnitTypeCollectionEditor() : base( typeof( List<UnitTypeItem> ) ) {} }

      SpawnTriggerRegionType _type = null; public new SpawnTriggerRegionType Type { get { return _type; } }

      /*
      Class funcionality implementation...
      //*/
   }
}


In the above example, it should be possible to assign elements to the field 'List<UnitTypeItem> units' in the Map Editor (to assign a list of units to a specific instance of SpawnTriggerRegion which is already placed on the map, and not the general type SpawnTriggerRegionType). Browsing dialog and everything else works fine, but currently, saving the map causes the following 'Assertion Failed' message:
'<Entity: GetSaveValueString: not supported serialize type "System.Collections.Generic.List`1[GameGeneral.SpawnTriggerRegion+UnitTypeItem] units"'

If adding this support is not planned, it is not a big problem, but it would be good to know for organizing our data structures accordingly.



A. Yes. I plan to make it.

For EntityType classes it is already partially realized. For Entity classes still are not present
. At present you can load/save such data through OnLoad/OnSave.


 (followup) I'm delighted to hear Smile

I'm currently already loading/saving the list items explicitly (one variable for every existent list item - *sigh*) in the overridden OnLoad/OnSave functions of class SpawnTriggerRegion, but I'm looking forward to it when [FieldSerialize] is implemented - my life will be a lot easier Smile

Thx


Q.When i have made a short demo in neoaxis, how do i export the game so i can give it to friends for testing?

A.Hi,

well, I would do it this way:

- Open the Game.sln in the \src folder, modify it as needed and build it.
- Make a new folder called lets say \myGame and copy the content
of the \bin folder into it.
- Delete all unneeded files, maps, etc. and deploy it

Hope it helps,
Xander


Hmm, sounds easy enough. But how do i build a game? Are there any tutorials for that?

Not clearly in what a problem.

You can add/change functionality in source codes of a demo.

Having copied folder "Bin" you receive your demo which will work on other computers.


Q. I've been working on this engine today, importing things from Blender. First I would like to say that I'm impressed with its capabilities. View the screenshot below... I got 4 real-scale Empire State buildings into the "Crane Demo" map from the demo, while retaining 45 fps!
After that I tried getting an animated Blender character into NeoAxis. It worked well for the most part, but I had to overcome a few obstacles with the Orge exporter:
All skeletons have to be parented together and set to affect the mesh (even if not assigned to any vertices) to export well. They do not have to actually be connected to eachother.

The scale for the skeleton doesn't match the scale of the model for some reason. They're both from the same Blender file and they match eachother in size in Blender. However once imported into NeoAxis the skeleton is about 30 times smaller than the mesh. Any ideas why? Is there any way to scale this back up inside the NeoAxis Resource Editor?

Q. I have a problem with using engine on my system. When I try to run neoAxis engine from VisualStudio 2005 in mode "Start without debugging"(Ctrl+F5) then engine shut down with fatal exeption:

Exception: System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
at Engine.Renderer.GuiRenderer.ScreenRenderFromListener()
at Engine.Renderer.GuiRendererRenderQueueListener.OnRenderQueueStarted(RenderQueueGroupID queueGroupId, String invocation, Boolean& skipThisInvocation)
at Engine.Renderer.WrapperRenderQueueListener.renderQueueStarted(WrapperRenderQueueListener* , Byte queueGroupId, basic_string<char\,std::char_traits<char>\,std::allocator<char> >* invocation, Boolean* skipThisInvocation)

This problem also happend then I run Game.exe without VS2005. But when I run in mode "Start Debugging" engine successfully run.


A.
This sounds like you may have an intel graphics chip which can have issues with neoaxis currently.

If so you need to run the configuration to set opengl, black screen bug tick, bilinear and try the demo. Many things will work, some will not. The map editor and resource editor may or may not work. A lot depends on the version/drivers. Or, it could be something else...

Any suggestions on how to implement comic book style dialog boxes which appear above characters when they chat? (Like Star Wars Galaxies)

A. To design a gui window it is simple. Look files in the Resource Editor:
Gui\Controls\DefaultWindow.gui, Gui\Controls\DefaultWindowBorder.gui
and edit boxes with "word wrap".

- The second task - to show and remove a window during game.

It is possible to find examples of loading gui models in "Game" project.

To define position of a window by screen coordinates it is possible to take advantage of a method: Camera.ProjectToScreenCoordinates()

Q.What's the best way to make their position 3d? (ie, to make them appear above a character's head and remain there as the player moves around)

Q.Can occluders or portals be one-way? Potential usage is in a building, where you want to be able to look out onto the street from a room, but you don't want to have to render every room in the building when you're standing on the street.


A. At present it cannot be made.

I can add property "bool Portal.Active" that there was an opportunity to switch on and switch off portals.
I shall add such opportunity at 0.44.


Q. hi
i need to change the audio file after 30 seconds how can i do this?

now i've allerta.wav i need to change it in evacuazione.wav after 30 seconds


Code:  ‹ Select › ‹ Contract ›

if( string.Compare( fileName, "Maps\\Rizzi\\Map.map", true ) != 0 )
         {
            GameMusic.MusicPlay( "Sounds\\Music\\allerta.wav" );
         }

A. You can make the counter of time in yours GameWindow

EngineApp.Instance.Time - to receive current time of the application.






Q. How does one compile a completed project into an .exe file? If I have a demo of my game I would like to share it later on.


A. I advise to use Inno Setup.
You can find Inno Setup installation project for NeoAxis and modify it for your needs.
By means of it I create .exe installations.
In SDK: SDK\Installer\NeoAxisEngine.iss



Q. I also noticed that the floor and ceiling in the rendering Demo section of the demo was a very realistic rocky
texture...was this a form of normal mapping, or was this parallax mapping?


A. Yes. it is a parallax mapping.
There is a bug in a texture (lighting is incorrectly displayed). At 0.44 it will be corrected.
Also at 0.44 it will be very easy to create new materials with per-pixel, bump, parallax mapping, cubemaps reflections, emission maps and etc.


Q. Can I attach a weapon or item with a different skeleton to a character or vehicle, and can the attached item
have its own separate animations?

A. You can attach any objects to bones. In EntityType Editor it is necessary to create bone slot at the attached mesh (Property BoneSlots). Further to hook on other attached object for you BoneSlot (Property BoneSlot).

You cannot hook weapons of the player for a bone. That there was such opportunity it is necessary to change works with the weapon of the player in PlayerCharacter.cs.

Q. When a particle effect is attached to a MapObject, the parameter Emitters.<Point>.Duration seems to be discarded (or set to a large value, respectively). Please click in the Resource Editor on 'PathClick_Particle.particle' and 'PathClick_Particle.type' (after copying the content of attached ".\Data.rar" to the ".\Data\" folder) to see the difference.
data.rar

A. The attached particle systems are always looped. You can observe it.
Probably it not absolutely correct logic for systems, which not eternal.

In your case creation of type - it is not necessary.

Use a method Map.CreateFreeParticleSystem for creation temporary particle systems. It will be automatically removed after stop of all emitters.

Q. Like Ogre, is it possible to use a Quake 3 maps, and if so how?

OgreBSPSceneManager it is not supported. It is necessary for work with Quake3 maps.

A. In a NeoAxis the portal system is used.
You need to import static geometry of a map and to adjust portal system (Zones, Portals and occluders).
You can look FPSDemo and MainDemo as an example.



Q. Is there a quick way to disable the particle animations of
weapon items, health items in the Map editor, they're distracting.


A.
Select "Map" entity in "Map hierarchy". Set property "DrawEffects" = false.


Q.With the main menu, how do I remove the fireworks in the background?

A.It is possible. You need changes source codes of a demo. See files: MainMenuWindow.cs, ProductLogoWindow.cs.


Q.As soon as the program is launched, you get two splash screens, Powered by Neo, and Neo SDK. Is it possible to change these?

A.According to the Non-commercial License you have no right to change starting Logo of a engine ("Powered by NeoAxis Engine").

Q. I will start with my recent problem.
Blender exporter is busting my models with weird bone calculations.They are overlapping badly.For example there is no bone for head in my overview but in blender it's ok.My left & right foot bones are missing with also bones coming from knees.Bones from hips are there where they should be.Tail is ok but I'm missing first parent tail bone coming from center of the body,hand bones are missing from elbows, etc...


had a problem with the skeletons not exporting correctly. This is really the only remaining Blender -> OGRE problem I have. I found that every bone needs to be set to "affect mesh" in Blender or it will not appear in NeoAxis. They also need to be parented to ONE root bone to solve some problems I had with more than one root not exporting at the spot they should be (torso would appear behind the legs).
http://www.neoaxisgroup.com/phpBB2/viewtopic.php?t=246
That topic has some links to animated characters that work fine in NeoAxis.
I'd really like to know what was done to those skeletons to make the scale import correctly...


Problem: Static objects imported from Blender models will not scale.
Solution: Scale in Blender and apply the scale and rotation (CTRL+A)

Problem: Textures will not appear on the material.
Solution: Once the texture has been copied to the folder with your model, just add the full path (the Data directory being root) to the texture somewhere in the MATERIAL file.


Problem: OGRE exporter gives errors that "Warning: Error in normalize! Face of mesh plane too small"
Solution: This usually happens when faces are too long and narrow. If it's actually noticeable that faces are missing in your model when playing the game, just fix them manually. =)

Problem: Skeleton "root" bones in NeoAxis are moved from where they are in Blender.
Solution: Make sure you only have one root bone.

Problem: Skeleton scale in NeoAxis is incorrect.
Solution: Currently you cannot scale skeletons in NeoAxis, and scaling them in Blender does not carry over to NeoAxis. Unless somebody knows of another disparate CTRL+A function as with static objects, we'll have to wait for the ability to scale skeletons. This should be coming in 0.44

Problem: Bones to not appear in NeoAxis.
Solution: Make sure the bones are set to "affect mesh" in Blender, even if they aren't actually assigned to any vertices.

Problem: Submeshes came from nowhere!
Solution: I'm unsure what causes submesh creation on export to OGRE, but it shouldn't effect your model. UVmapping still works seamlessly if you apply the material to every submesh of your model.

Here's one that works-

http://terrymorgan.net/download.htm

http://terrymorgan.net/virgil_walks.zip

Tutorial-  Made using Blender 242a and the exporter contained in 'virgil_walks.zip'


http://terrymorgan.net/anim_character_pt1.zip

http://terrymorgan.net/anim_character_pt2.zip


Q.. im having problems configuring the water plane. how can i edit the ocean parameters for lets say the terrain level. is there an interface or is it done by code?
 
A. You can change a position of water in the Map Editor.

Q.. how can i make a water foam system. should i use alpha maps or particle emmiters or is there another way.
Q.. how can i add splash effects when something hits the water or is moving in the water.


A.At present the engine does not support it. Probably it will be realized in the future, but is not fast.

Q.. is it possible to create reflections of stationary and moving objects instead of just the skydome?

A. In the nearest releases it will be realized. (0.45 - 0.47).

Q. how can i make the water plane a circle or triangle shape?

A. You can change WaterPlane.cs.



Q. What's in NeoAxis Engine 0.44?

A.- High level materials. High level materials - it is a extension above standard materials for procedural generation of standard materials and shaders. High level materials simplify creation of new materials. Allow to generate various variations of shaders. From the point of view of designers, the high level material represents the list of properties (a paths to textures, colors, etc.). Also there is an opportunity to create the templates of materials on the basis of SDK.
- The Material Editor for a high level materials.
- ShaderBase high level material: Base template for creation shader materials. diffuse maps, specular maps, emission maps, normal mapping, offset mapping, cubemap environment mapping, vertex colors, transparency (ShaderBaseHighLevelMaterial template).
- RenderDemo updated: Offset mapping and cubemap reflections example
- Example of a class of a high level material (SimpleExampleHighLevelMaterial template)
- Template of a high level material for creation a skyboxes. (SkyBoxHighLevelMaterial template)
- CubemapZone. Cubemap zones are intended for accommodation on a map of zones for cubemap reflections (environment mapping). Cubemap zones at loading a map render a scene in a cubemap textures. During rendering a scene, the object being a zone, uses a cubemap texture of a zone. It is used in ShaderBase high level material.
- Shader programs PerPixelLighting, BumpMapping, OffsetMapping are removed. Now it is necessary to use ShaderBaseHighLevelMaterial.
- HeightmapTerrain: Smoother switching of LODs
- HeightmapTerrain: Smaller amount of used memory
- HeightmapTerrain: Per pixel lighting
- Entity System: Complete support of serialization through FieldSerialize attribute. Including support of custom structures and classes.
- Documentation: Serialization in Entity System is updated
- Resource Editor: The tool for scaling models. The button "Scale axises".
- WindowAppExample. Example of initialization of a engine in the WinForms application.
- Skyboxes now are correctly oriented
- Properties Portal.Active, Occluder.Active (Are not visible in the Map Editor)
- More detailed limitation of the shader version in the Configurator (vs_2_0, vs_2_a, ps_2_0, ps_2_a, ps_2_b)
- It is not necessary to specify attributes any more for QuatShowAsAnglesConverter, ColorValueAsByteConverter. Now it is made automatically.
- MaterialManager: Now the created material has no any techniques by default (method Create)
- TextBlock: It is a little more user friendly serialization of attributes
- 3dsExporter: Export of vertex colors
- Bug fix: HeightmapTerrain: Errors appearing at edges of map are corrected
- Bug fix: HeightmapTerrain: Incorrect display at creation of a new map
- Bug fix: Crash of the Resource Editor at opening Decal.type
- Bug fix: Wrong limitation of the shader version in a Configurator
- Bug fix: Wrong value Viewport.Dimensions
- Bug fix: Resource Editor: Error of creation of new type with a class "Door"
- Bug fix: Incorrect work of posteffects at change of the window size in Direct3D
- Bug fix: Incorrect work of dynamic geometry with stencil shadows.
- Bug fix: Explosion class: Absence of influence from explosion at death of object. (an example: zombie do not burns, if it killed by grenade).
- Bug fix: Map Editor: The error of rotate objects in which is joints exists (for example the crane)
- Bug fix: Wrong serialization of object StaticSound
- Bug fix: Wrong dimensions of models after turn of axes in the Resource Editor




Q.How do I gain access to the new Material Editor, and how does it work? I didn't find anything in the CHM in 0.44


 Material Editor supports only High level materials (.highMaterial files)
You can find such files in a demo or create new.

A. See this for example: "Data\Types\StaticObjects\OgreHead\OgreHead.highMaterial




Q. I'm working on building my own maps now but am confused as this is unlike any editor I've worked with previously(UnrealED e.t.c).
Say I'm making the interior of a large building what would be the best way to go about the .mesh construction?
In the main demo the area is one .mesh, and in FPS demo there are multiple,
What would be the best practise for constructing this map?

Build the whole building as one .mesh?
Smaller sections such as each floor?
Individual pieces such as room, hallway, stairwell?

Also could someone give me an idea of the limits of the .map size?
I've increased node size as a test but am unsure as far as density and load times e.t.c

If I was to build a small city block with many interiors how much would this need partitioning with map transitions , if at all?

An idea of the limits would be good before I start
     ..    


A. Make as to you more conveniently.

The engine does not have a difference how much meshes will be in static geometry (StaticGeometry).

Differences it can be appreciable for Collision. If at you it is a lot of triangles loading of a map will borrow significant time. To accelerate loading it is necessary to make the simplified model of collision.

By the way. The engine splits all static geometry on pieces. You can see it having played with Draw Debug options. The size of pieces depends on property Map.NodeSize in the Map Editor.


I prefer to make one mesh for all static geometry.


Q. where in the default files do I go to find the .material script?


a. Possibly, for OGRE .material files will not be editors. Or they will be very limited.

For shader materials procedural generation is necessary. Without procedural generation it should to make many .material files for each case (there is a set of combinations: quantity of the light sources, necessary textures, reflections, etc.). As a result it would be similar to a chaos. It is impossible to make the universal editor for this purpose.

For fixed pipeline, it is possible to make the editor. But ffp all is less demanded. Also .material files for ffp very simple.

Therefore the new format of materials has been created. High level materials. They allow to generate automatically OGRE materials and shaders. (procedural generation).
Also you can create a new algorithm of high level material. Look an example in SDK (SimpleExampleHighLevelMaterial).


Q. where is the texturing tool??

A.When you create model in a 3D package you have a model and texture.
Exporter creates .mesh and .material files.
It is necessary for you to copy necessary textures in a directory with the .material file.
Further it is necessary to edit correctly file paths to textures in the .material file. (some exporters of not do it).


Q. What's in Neoaxis 0.45? (July 18, 2007)?
Q. I am messing around with this engine, very nice. Pretty easy if i can figure it out. Laughing

Anyways, I would like to make my RTS Factory be able to build additional units. But I cannot find anything in the /bin directory or the /src directory that specifies the units that can be built. Where is this information stored?

Also, I tried to make a "Repair Truck" But it wants to ATTACK the enemy instead of heal my units. I cannot find where to specify this also.

Thanks!

A.
Unfortunately, the code for RTS is not universal. It is an example for RTS, but not the RTS engine.

So.
Add a unit for factory.
Open file RTSBuildingAI.cs. Go to method GetControlPanelTasks. Here the list of buttons on the control panel is created.

This example add "RTSConstructor" to factory units list:


//RTSFactory specific
if( ControlledObject.Type.Name == "RTSFactory" )
{
   RTSUnitType unitType = (RTSUnitType)EntityTypes.Instance.GetByName( "RTSRobot" );
   list.Add( new UserControlPanelTask( new Task( Task.Types.ProductUnit, unitType ),
      CurrentTask.Type == Task.Types.ProductUnit ) );

   //!!!!!!new code here
   unitType = (RTSUnitType)EntityTypes.Instance.GetByName( "RTSConstructor" );
   list.Add( new UserControlPanelTask( new Task( Task.Types.ProductUnit, unitType ),
      CurrentTask.Type == Task.Types.ProductUnit ) );
   //!!!!!!end new code
}


For "repair truck" you need next.
Open RTSUnitAI.cs. Find line:



if( ControlledObject.Type.Name == "RTSConstructor" )


and change to:


if( ControlledObject.Type.Name == "RTSConstructor" ||
ControlledObject.Type.Name == "MyGreatRepairTruck" )


Yeah i kinda figured that out right after i posted this thread. I dont know how i missed it the first time.

Unfortunately I have made the changes except I have no clue how to setup Visual C++ 2005 Express Edition to compile the changes :(

By looking at the .cs files in the source, I can understand the C++ language, at least enough to make little changes. I just dont know how to setup the compiler. It keeps asking me for a .exe file when I debug, I though compiling it was supped to MAKE the .exe I am confused.

I am sure I could do it if I had a walkthrough . Its just that I have never done any programming before (except for "Hello World") so I dont know how to "setup" the Visual C++ 2005 Express in order to "use" the source files already included in your SDK.

I have already done the "5 Steps" Here: http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk/default.aspx :

You can use Visual C++ Express to build powerful .NET Framework applications immediately after installation. In order to use Visual C++ Express to build Win32 applications, you'll need to take just a few more steps. I'll list the steps necessary for building Win32 applications using Visual C++ Express.

Step 1: Install Visual C++ Express.

If you haven't done so already, install Visual C++ Express.


Step 2: Install the Microsoft Platform SDK.

Install the Platform SDK over the Web from the Download Center. Follow the instructions and install the SDK for the x86 platform.


Step 3: Update the Visual C++ directories in the Projects and Solutions section in the Options dialog box.

Add the paths to the appropriate subsection:

  • Executable files: C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Bin
  • Include files: C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include
  • Library files: C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Lib

Note: Alternatively, you can update the Visual C++ Directories by modifying the VCProjectEngine.dll.express.config file located in the \vc\vcpackages subdirectory of the Visual C++ Express install location. Please make sure that you also delete the file "vccomponents.dat" located in the "%USERPROFILE%\Local Settings\Application Data\Microsoft\VCExpress\8.0" if it exists before restarting Visual C++ Express Edition.


Step 4: Update the corewin_express.vsprops file.

One more step is needed to make the Win32 template work in Visual C++ Express. You need to edit the corewin_express.vsprops file (found in C:\Program Files\Microsoft Visual Studio 8\VC\VCProjectDefaults) and

Change the string that reads:

AdditionalDependencies="kernel32.lib"

  to

AdditionalDependencies="kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib"


Step 5: Generate and build a Win32 application to test your paths.

In Visual C++ Express, the Win32 Windows Application type is disabled in the Win32 Application Wizard. To enable that type, you need to edit the file AppSettings.htm file located in the folder “%ProgramFiles%\Microsoft Visual Studio 8\VC\VCWizards\AppWiz\Generic\Application\html\1033\".

In a text editor comment out lines 441 - 444 by putting a // in front of them as shown here:

// WIN_APP.disabled = true;
// WIN_APP_LABEL.disabled = true;
// DLL_APP.disabled = true;
// DLL_APP_LABEL.disabled = true;

Save and close the file and open Visual C++ Express.

From the File menu, click New Project. In the New Project dialog box, expand the Visual C++ node in the Product Types tree and then click Win32. Click on the Win32 Console Application template and then give your project a name and click OK. In the Win32 Application Wizard dialog box, make sure that Windows application is selected as the Application type and the ATL is not selected. Click the Finish button to generate the project.

As a final step, test your project by clicking the Start button in the IDE or by pressing F5. Your Win32 application should build and run.



I just dont know what to do after that!



Q. How do I create a particle system in code and attach it to an object.This is what I have got so far, however i cant cast an Entity type as a MapAttachMapObject type. What am i missing. please help


MapObjectAttachedParticle fxParticle = (MapObjectAttachedParticle)Entities.Instance.Create("fxParticle", Map.Instance);

            if (ShieldTrooperSelected)
            {
                ShieldUnit shieldTrooper = (ShieldUnit)Entities.Instance.Create("shieldtest", Map.Instance);
                SpawnPoint mSpawn_Shield = (SpawnPoint)Entities.Instance.GetByName("spawn_Shield");
                if (shieldTrooper && mSpawn != null)
                {
                    shieldTrooper.Attach(fxParticle);
                    shieldTrooper.Position = mSpawn.Position;
                }
            }



A. Create entity example:

MapObject obj = (MapObject)Entities.Instance.Create( "Box", Map.Instance );
obj.Position = new Vec3( 0, 0, 10 );
obj.PostCreate();


Attach particle system example:


MapObject obj = ...;

MapObjectAttachedParticle attachedParticle = new MapObjectAttachedParticle();
attachedParticle.SetParticleSystem( "SmokeParticle" );
obj.Attach( attachedParticle );


Q. Currently, both in Demo,Resource Editor, and Map Editor, the lighting system seems bugged.

Even with additional lighting added, every map appears very dark with massive flickering.

Current system this is running on is a Geforce 7950 GT (512 ram) Windows Vista.

I've tested it in my virtual PC running XP and I'm getting the same results on this video card. Ill post pictures when available.




A. This is a HDR/adaptation problem.
Switch off the adaptation in the post effects window for fix problem.


We got the same problem here, but we do something else to "correct".

I dont turn the adaptation off.
Under the menu options screen, go to Post Effects > HDR
In the "Adaptation Middle Brightness", the value 0.40 seems to be too dark. I use it around 0.70.

I guess the value can be changed by default in some .config file, so You dont need to do that every time, but I didnt look out for that file yet.
Is there such file, betauser?


This file here: Data\Definitions\Renderer.config

It is a bug. Because on different videocards "Adaptation Middle Brightness" has different values for identical brightness
.




Q. The NeoAxis demo has decals that appear on the walls for bullet holes and explosions. How can these be edited? Can they use parallax and normal mapping?

A. You can create new types of decals. Look existing types of decals.

At present it is impossible to use normal mapping and parallax mapping in the decal materials. Because, for the decals do not creating Tangent Vectors. In the future it will be realized.



 Q. Hey,
Just a quick question. I want to change the colorMulitplier property of a gui element(button). However it doesn't seem to use a string as input. what is the correct syntax for this.

All help is appreciated:)

This is what Ive got


window.Controls["InfantryButton"].BackTexture = "Gui\Textures\InfantryButton.png";


A.Try this one:

window.Controls["InfantryButton"].BackTexture = TextureManager.Instance.Load( "Gui\\Textures\\InfantryButton.png" );


Sounds good. However, what Type is 'TextureManager' an object of??

regards Rain



TextureManager itself is the type (or, more specific, the class):

public class Engine.Renderer.TextureManager

There is only one object of class Engine.Renderer.TextureManager instantiated - in other words, it is singleton.
<Instance> is a static member of class Engine.Renderer.TextureManager containing the reference to this one single object to provide access to the other members.

Generally, this class is just a library of functions for - well - texture management.



Ahh figured it out. The reason I asked that question was it wasn't showing up in my list. I eventually worked out I hadn't included Engine.Renderer in the using statement list Thank you for the help Very Happy

Q.Well, this should be my very last question! (I hope)

I've created my basic building blocks(I'm using small meshes to build a room) I've imported the meshes and created objects in the resource editor. For whatever reason, I can't view any of them in the Map editor though.

I'm almost sure I've forgot something relatively easy, any suggestions?

A.You need set property AllowEditorCreate = true.



Q. I have finally created my main character. i fully animated in maya then exported.

i made an idle, run(forward back right left), slow down running then stop, walk (forward back right left), jump and land animations and i want to use them in NA.

how can i script the player to play these animations. i dont want one animation to play over and over again like the red rabbit. Instead i want each of these to be binded to each action that can be made and possibly to have smooth transitions.



A.Smooth transitions at present are impossible. It will be realized little bit later.

At present, for special job with animations - it is necessary to modify a source code of a game. See files Character.cs, GameCharacter.cs, PlayerCharacter, PlayerIntellect.cs
.

Hi all!

I've downloaded & installed the SDK, and played the demo. I was browsing the SDK documentation for more than an hour, but there are a lot of things I can't figure out.

1. I wanted to put friendly and enemy units, but I can't find the corresponding property in the map editor. I opened the skirmish map, and I found some entity creation code in it, but I don't know how should I port it to my map. I guess this code sets the entities friendly, but I'm not 100% sure though:

Code:  ‹ Select ›
   GameCharacterAI intellect = (GameCharacterAI)obj.Intellect;
   if( intellect != null )
      intellect.Faction = PlayerIntellect.Instance.Faction;


How can I place a trigger or something that sets my units friendly?

2. Can I change the HUD/player model/weapons, etc.? (Now I don't need to know how, I just need to know if I can do it or not.)

3. When do I need to get a MS Visual C#? (I only have MS Visual C++ 6.0, but I don't think that will do the job. Sad ) I don't want to change the rendering engine, but I'd like to create new entities and stuffs. As I get it out, I can do that with Resource Editor, and I can write some code in logics. So what can I do without MS Visual C#, and what I can't?

4. In Valve Hammer Editor for Half-Life I liked that I can place individual walls, align textures, etc. In this level editor I don't know how to do these stuffs. :S I used to map & code for HL though, but as I can see those experiences won't help me learning this engine, it's absolutely different.

Sorry for disturbing you with these irrelevant newbie questions. But thanks if you answer them.

Greetings,
MegaBrutal


1. There is more simple way to appoint Faction. Property InitFaction at Unit class. You can change it in the Map Editor.

2. Yes. You can change all parts of demo (HUDs, models, game logic, etc).

3. The tool is necessary for job with a code when you wish to add new functionality in your game (new Entity classes, menus logic, etc).

4. At present the best way is that that offers crazy8john.
 . You could make "building block" models in a modeling tool and use that to assemble your building, but it'd be much easier to just make the building the the 3d tool and import it into the engine. Textures effects and settings are easy to change (.material files are ascii text), but you can't really move where the texture is displayed on a wall, for example.

 It to create static geometry in a third party package and to export as one mesh.
In version 0.46 there will be an opportunity to move meshes in the StaticGeometry. I.e. it can be used as the constructor.


Microsoft Visual C# 2005 Express Edition is free and relatively easy to use.

Q. When i have made a short demo in neoaxis, how do i export the game so i can give it to friends for testing?



A. well, I would do it this way:

- Open the Game.sln in the \src folder, modify it as needed and build it.
- Make a new folder called lets say \myGame and copy the content
of the \bin folder into it.
- Delete all unneeded files, maps, etc. and deploy it

I advise to use Inno Setup.

You can find Inno Setup installation project for NeoAxis.
By means of it I create .exe installations.
In SDK: SDK\Installer\NeoAxisEngine.iss



Thanks for the suggestion for creating an installation exe.
Ivan, I'm really impressed at how simple it is to pack up the game to transfer. All I have to do is copy the Bin folder and Game.sln and it will run on any computer with .Net. =) Awesome!

How would I compile Game.sln into binary, and is there a way to compile the contents of Bin so the resources in the final game can't simply be imported into other programs?


You don't need to distribute Game.sln.

You only need to compile Game.sln if you make changes in the code. You can download C# Express from Microsoft if you want to make changes to the code located in the /Src folder.

I don't think you can put resources into .zip files.... Yet.


Q.What's in  Neoaxis 046? (August 16, 2007)?

- StaticGeometry: Opportunity to move, rotate and scale objects. An opportunity to work by means of gizmo. Various additional options.
- ShaderBase material: 4 diffuse textures, texture animations, clamping, choice of texture channels
- Sky domes
- WaterPlane: Reflections (simple method), fog, splashes
- Sound System: Opportunity of reception of a sound from a microphone
- RenderDemo is updated
- CraneDemo is updated
- SoundDemo is updated. Example of reception of a sound from a microphone and generation of a sound from a code
- Map Editor: Button "Focus Camera to Object"
- Documentation: Tutorials is updated
- Scene Management: Correct work of cameras with reflections
- Resource Editor: The tool for moving axes of meshes
- HeightmapTerrain: Now supports ps_2_0. (early ps_2_x and above)
- Game options: Opportunity of a choice of a level of water reflections
- Work of gpu programs cache is improved
- Indoor Scene Manager is optimized
- Shape: Property SpecialLiquidDensity. For adjustment of special density in water.
- Bug fix: ShaderBase material: Incorrect work of spot light sources
- Bug fix: ShaderBase material: Incorrect work an alpha blending with a fog
- Bug fix: Wrong serialization of layers in the Map Editor
- Bug fix: In some cases invalid work of WaterPlane and SkyBox during simulation
- Bug fix: Wrong detection of visibility of flares at the switched on shadows
- Bug fix: Problems of a relative mouse mode on the multimonitor systems
- Bug fix: Map Editor: Incorrect work Undo/Redo at creation/removal of objects
- Bug fix: Bullet: Wrong orientation of bullets with gravitation
- Bug fix: Door: Twitching mesh at closing a door
- Bug fix: Invalid work of occluders in some cases
- Bug fix: Error of creation of new type on base of class Turret




Q. I can't run the 046 demo!

I have discovered the problem...

The Windows Vista has the User Account Control (UAC) ativated by default. This control avoid the programs to access some resources and block some suspicious routines like you can see:

Description from Microsoft:

"The main goal of User Account Control is to reduce the exposure and attack surface of the operating system by requiring that all users run in standard user mode. This limitation minimizes the ability for users to make changes that could destabilize their computers or inadvertently expose the network to viruses through undetected malware that has infected their computer.

With User Account Control, IT administrators can run most applications, components and processes with a limited privilege, but have "elevation potential" for specific administrative tasks and application functions.

Conversely, when users encounter a system task that requires administrator privileges, such as attempting to install an application, Windows Vista will notify the user and require administrator authorization. This type of prompting helps ensure that users do not accidentally make modifications to their desktops. It also helps eliminate the ability for malware to invoke administrator privileges without a user's knowledge.

As a defense-in-depth measure, User Account Control also provides additional protection for administrators through its Administrator Approval Mode. With Administrator Approval Mode, Windows Vista will run most applications with standard user permissions even if the user is an administrator. If a user wishes to run a program that requires administrator permissions, they must give consent through a User Account Control prompt. This helps limit malware's ability to make system-wide changes without the administrator's knowledge. However, Administrator Approval Mode does not provide the same level of security or control as a true standard user account."

So my friends, turning off this feature, I CAN RUN THE DEMO !!!!!



Q. Is there a way to get back to original position in editor after panning to much outside the current objects in scene? Like a button or command to reset camera position or to focus on one of the currently added objects in scene.


A.
Select an object with mouse or
Make sure "Show Map Objects" is pressed. Its the little button with 3 red squares on it at top right. Select an object to center on.

Click the 3rd Icon from right in top toolbar. It looks like a little red box in a square.
On toolbar there is a button "Focus Camera To Object" - which focus the camera on the selected objects.
found the F key in the end Smile and the little red button on top of Map Hierarchy that list all the objects in scene.

I figured out you can select an item from the list and middle mouse click in the viewport and then press F to select it. Is there a better way?


Q. I've seen the topics about creating elevators and i want to create something similar. I want to create a platform of some kind with a step-on button in the middle. on that button i want to add a trigger which moves the platform along a path(similar to the cut scene camera path). i want the player to be able to move while the platform is moving. also when the player steps off the button/trigger i want the platform to keep moving until it reaches its destination.

right now im trying to figure out how i can code the path and move the platform.

anyone got any ideas?


A. It is very similar to the lift.

It is necessary for you to move manually all objects which are on a platform.

The second way.
It to make the true rails. Move a body of a platform with Body.AddForce() method. Objects which are on a platform will move with a platform.
Then it will be more fair way. But not always suitable.



when the player moves onto the platform button/trigger it starts the cutscene.
the screen fades out and plays the camera, but at the same time the platform moves along with you.

Q. so, how can i make the platform move along a path? first off, should the platform be a .mesh file? if so how can meshes be moved along paths. i would do the same with the player.

(also, this is not related) where can i disable the non-player camera. when i press c it switches between the 1st person, 3rd person and the spectator camera. how can i disable the spectator camera.


Yot need create a new entity class. For example: Platform (base class MapObject).
Further it is necessary to make entity type. Platform.type on the basis of a Platform class and to attach mesh to type.

For creation of a way it is convenient to use MapCurve entity.
You can make field "MapCurve path" in "Platform" class. By means of this property you can specify Path for each platform.
In a code of class Platform, it is necessary to make movement on a way. I.e. to use data of entity "MapCurve path". And to move a platform.



Q,.How di I change the draw distance in general, such as not drawing objects, for example, within 50 visible meters.


A.  You can change visibility distance.
Select "Map" in the Map Hierarchy. Property: NearFarClipDistance.
For example: "0.1 50".


Q. The models are facing the wrong way, lying down, too large/small, different from my modeling program!
A.http://www.ogre3d.org/phpBB2/viewtopic.php?t=32352&highlight=meshmagick

MeshMagick is a mesh (and skeleton) manipulation tool for Ogre meshes (and skeletons). It allows to query interesting informations and to transform binary meshes (and skeletons) in many ways.

Are you as annoyed as I was when I started with Ogre? Robot and Ninja don't look into the same direction. The Ninja looks toward -Z, the Robot toward +X. Not anymore! With a single command you can change the direction the robot looks:
Code:

> MeshMagick transform -rotate=90/0/1/0 robot.mesh

(Make sure the skeleton is in the same directory as the mesh)


This rotates the robot mesh 90 along the Y-axis (0/1/0).
Similarly you can change the scale using the -scale option, or you can translate the mesh along a vector using -translate or you can even realign the mesh in its local coordinate system. Say you want to have the robot pivot point in the model center instead of at the model bottom like it is now. Just call:
Code:

> MeshMagick transform -yalign=center robot.mesh

Same works for X- and Z-alignment.



Q.The models are off the floor/in the floor!
A.If I put a value of -1.15 as the Z-Height value in the entity type within Resource
Editor, and then counter that value in the positive direction in Map
Editor, my character now rests on the zero floor level properly. I got this value
by looking at the Zombie entity and noticing that same value for Z-height.
(if you change it to 0, he will translate up in the Resource Editor viewport)

Note as of August 29, 2007, there is a problem with the bounding box, if you rescale your model, the
bounding box is still huge and the model falls to the bottom of the box no matter where you put him in the map
this will be fixed.


Q. I'm trying to export some models from 3DS Max and it works fine for single objects but I need to export submeshes. How do I go about doing this? I've tried selecting multiple objects in the exporter but it only comes out with the first one I selected.


A. For a many SubMeshes, it is necessary to use one object with MultiMaterials. It is necessary for you to attach all objects to one. And at export it will be created subMesh for each material.



Q. How do I make flashlight? please help me?
A. There are some ways:

1. To make it as weapon. I.e. it is necessary to create a new class on the basis of Weapon. class Flashlight: Weapon. You can attach a light source to entity type of this class.

2. You can attach a light source to the player (for example: Rabbit.type). And to switch on/off it from a code.

At present light sources cannot project textures. In the future there will be such opportunity.



Q.Do you have any hints on how to make laser type weapons? I have tried messing with billboards and particle systems to no luck. I have gotten some pretty cool effects but nothing like laser beams.

A. Universal way for drawing lasers - to use dynamically created geometry from a code.

Also you can try to make lasers by means of RibbonTrail. It will be enough possible it. I did not try.
Look FirewordBullet.type and ShotgunGravityBullet.type for an examples.


Q.How do I get my Blender Ogre .material files into highmaterial format?

A. Here's how the box.material comes out of Blender:

material box_mat/SOLID/TEX/zbrickfloor.jpg
{
    technique
    {
        pass
        {

            texture_unit
            {
                texture types\staticobjects\test_mat\zbrickfloor.jpg
            }
        }
    }
}

Here's how the box.highmaterial should read:

highLevelMaterial box
{
    template = ShaderBaseMaterial
    reflectionScale = 0.3921569 0.3921569 0.3921569
    specularScale = 1 1 1
    specularShininess = 23.883
    heightFromNormalMapAlpha = True
    heightScale = 0.02
    diffuse1Map
    {
        texture = Types\StaticObjects\test_mat\zbrickfloor.dds

    }
    normalMap
    {
        texture = Types\StaticObjects\test_mat\zbrickfloor_a.dds
    }
}


You can make normal maps and .dds files with the Gimp, search for 'normalmap plugin' , 'dds plugin' and with Photoshop, it has an Nvidia plugin for
normal maps and .dds, although you can use .jpg, .png, .bmp, etc for Ogre textures.

Once you get the .highmaterial made, it will show up in the Resource editor but not on your mesh, so click the mesh and go 'View/Properties and look for ForceMaterial, click on the 3 dots at the right and load the box.highlevelmaterial, the mesh should now be bump-mapped, note the settings above makes it very shiny.

It's figured out, when I write the tutorial it will be called 'neo_bump.zip' and be at http://terrymorgan.net/download.htm


Q. I am importing foilage models. They use the typical big tries on which small leaves are drawn with alpha to handle where the leaves are not. Sadly, the alpha appears black when imported and not transparent.


A. this is in the neo distribution:

material Palm
{
    technique
    {
        pass
        {
      scene_blend src_alpha one_minus_src_alpha
      depth_write off
      
            texture_unit
            {
               texture Types\StaticObjects\Palm\Palm.tga
         tex_address_mode clamp
            }
        }
    }
}


q.How big is Neoaxis' scale compared to Blender?


a. blender_neo_scale.jpg
The square grid is the Blender Grid, so the Neo RTS terrain is larger.

rts_demo_in_game.jpg

RTS-terrain in game

Q.-I have my weapons available in the resource editor.
-I have my weapons available in the map editor.
-My character can pick them up, all is fine.
-I can't see the weapon being held, nor can I choose it, nor can I fire it. I was just testing the weapons in the basic map, using the rabbit mesh as the character. Do I need to create another mesh for FP view? I saw in the game resources that there was a FPS mesh there but I dont see where it ties into anything.


A.Problem not clearly.

For FPS a kind in the weapon exists a special property "FPSMeshName".
When the camera in the FPS mode the weapon will be drawn as FPSMeshName.
FPSMeshName not obligatory property. If it empty the usual model of the weapon is used.

Also for correct work of the weapon for the player, it is necessary to add it in the weapons list (Rabbit.type - property Weapons).




Q.TerrainMaps don't align

If I create 2 Terrain Maps with Horizontal Size of 100 and place one at location ( 0 100 0 ) and place the other to ( 0 200 0 ) there is a gap between them.

The fix is to set the Horizontal Size to 101 on both.

EDIT: 101 causes some overlap. The setting is closer to 100.8 for seamless fit.

A.Yes. Terrain has little bit smaller size, than HorizontalSize. For the size of one cell.

However I think bad idea to connect two terrains. They will precisely not adjoin.


where in the source are the control keys defined... i would like to change the WASD to the arrows and jumping to control for example ...


Look at GameGeneral - ControlKeys.cs for quick key re-mapping.

Keys.Left
Keys.Right
Keys.Up
Keys.Down

Are the cursor key codes.

---
For adding functionality...
Game - ActionGameWindow.cs or simular such as RTSGameWindow.cs / CustomGameWindow.cs

Edit: You may have to edit the *GameWindow anyway. It seems that the W A S D are hard coded in.




Is pi**3 degrees of freedom possible? In the "run simulation" I can't bring my camera up past 90-degrees (0-degrees level with Z), whereas I need to be able to control my object to face any possible direction. Is this possible? 360 degrees on the X, Y and Z; Z stops at the top and bottom)

He wants to know if you can go past the straight up view when pressing Y. So maybe if you had a robot model that could rotate his head 360 in pitch, you wouldn't want it to stop rotating once it got to a certain point.

For example, if I'm flying an airplane and I pull back on the stick, the plane will go up. If I keep pulling on the stick the plane's nose goes up more, and when I get vertical I should be able to keep pulling and eventually I will have done a loop in the air.

Right now, if you look up in the air you can't look all the way over, you stop when you get to 90 degrees.



You can control camera from game windows (Game.vcproj).

Look GameWindow classes and method OnGetCameraTransform().

For example: ActionGameWindow.OnGetCameraTransform().

Q. What's new in Neo 047? (September 14, 2007)

Q. How do we assign a global key?
For example if the player presses I to bring up an inventory gui while pausing the game; pressing I again or closing the window will return to the game. Also this key could be reassigned from the game menu, key config options.


A.
You can carry out such task in the game window. (ActionGameWindow.cs for an example).
You can change a code for your needs. For example to create a window after pressing of key.

For a pause there is a property: EntitySystemWorld.Instance.Simulation


Q. Why arent the classes declared as static, instead of using Class.Instance everytime?

A. When the object is not created, "Class.Instance" gives "null".
If we call "Class.Instance.SomeMethod()" and object is not initialized, there will be an assertion. It will be easier to us to find an error.

For static classes, to each method, it is necessary to write "static" (static void SomeMethod()). It spoils appearance.

+ it is philosophy.



Also a couple at http://terrymorgan.net/download.htm



NOTE: I tried the BreakOut tutorial on the Wiki. Everything went well until near the end of tutorial 3. I haven't figured how to put screenshots in yet so I'll just write the error messages.


The name 'retVal' does not exist in the current context - PlayerManager.cs

'GameEntities.Player.intellect' is inaccessible due to it's protection level - GameWorld.cs


Also, back where we first run the new game (with no controls), you should put in a close game on ESC. Currently it's ctl/alt/delete.




Q.Hi, I'm new to the engine and whilst I'm getting up to speed I wonder if someone can point me in the right direction with this simple question.

All I want to do is understand how I can have an object and make it rotate on its own axis i.e. spin (no bones, connectors etc. just one mesh) - the weapons on the floor rotate, however, I cant find the entry to reference.


A.Hi,

See please Item.cs and UpdateRotation() for example.

Ask more, if you have questions.
Q. How to block player from certain areas

It is possible with map logic editor to create limit?
In fact player can left map if it is at the end limit of a map, and i want to block him.


A. Look in map editor. Special>DynamicCollision

The map TPSArcadeDemo show this in use in the rows of trees.


Q.Without use normal map all this is normal, as soon as I load a map at once such bugs


normal_bug.jpg

A. If you use Normal mapping it is necessary to calculate Tangent Vectors.
Go to Resource Editor, your .mesh file. Button "Channels"

Probably problem in it.
channels.jpg




Q. I put a bunch of Xander's foliage in my 512x512
heightmap terrain, now my frame rate is 6 in some me
places. Besides the obvious

delete stuff

draw it less

use a 256x256 heightmap


solutions, is there anything else I can do to increase frame rate? I have a 1.5 GHZ athlon with 1 GB memory and a 256MB Geforce 6600. I noticed Oblivion
fogs at a certain distance, and also restricts the
screen res to 640x480, it runs pretty fast with way
more stuff than my heightmap.


A.HeightmapTerrain:
- Switch off LODs. At present they work not quickly.
This is in resource editor, 'tree_oak_neo.mesh'  /properties/manualLODs/Collection/Remove (if you've made a billboard LOD)
- Increase TileSize
In Map Editor /heightmapterrain/tilesize 16x16 default. I set this to 64x64, 32x32 was the other choice.
- Switch off PerPixelLighting

- DetailTexturesDistance to make as small as possible.
In Map Editor /heightmapterrain/detailtextures, range is 20-200, default is 50, I guess 50 is where it
stops drawing the textures? 50 what? I set this to 20

In Map:


- Make big NodeSize. For example 200, 200, 200

in Map editor, Map hierarchy/Map/Properties/Node size default 30 30 30

This really helped, lowest frame rate was 26 afterwards.


I don't want my oak tree to waver, if I saw an oak
tree waver outside my house, it means we're having an earthquake! But the Vegetation highmaterial is
the only one that supports alpha transparency, is this
correct? And the wavering is built in.



You can create a material on the basis of ShaderBase material (not Vegetation material).
Then waving will not be.

highLevelMaterial tree_oak_neo
{
    template = ShaderBaseMaterial
    culling = False
    alphaRejectFunction = GreaterEqual
    waveOnlyInVerticalPosition = True
    diffuse1Map
    {
        texture = Types\StaticObjects\tree_oak\oakleavesd_256.png
    }
}


My heightmap terrain is very bright if I turn up the /map/ambient to 181 181 181, which is
what looks good in the game.

A. make a point light in the editor and give it an Attenuation Constant of 0.7, then before you run the map, turn
it to 0, save the map.

What do the decor look like?

decor_catalog.jpg

Note: "mixed vegetation" is DefaultGrass and koahaole, with a tiny amount of Kapuu. Aloha nui nui!




New in 050-
Conditions of licensing are changed. The prices and structure of licenses have changed. Now licenses differ by functionality.
- Problems of working of the engine on the some ATI cards in Direct3D are fixed
- ShaderBase material: Support ps_2_0 or above (Earlier ps_2_a or above).
- DirectSound system implemented
- OpenALSoundSystem is removed
- Support of file archives. The interface for creation of new types of file archives.
- Zip archives support
- Example of file archives (Data\_Tests\ZipArchiveTests)
- Dynamic parameters in gpu programs
- Example of use of dynamic parameters in gpu programs in RenderDemo
- ShaderBase material: Scroll and Rotate properties
- ShaderBase material: The format of files is changed. Compatibility for options of animation is lost. It is necessary to set up properties of animation anew. Be attentive.
- ShaderBase material: Dynamic parameters (DiffuseScale, EmissionScale, ReflectionScale, SpecularScale, FadingByDistanceRange)
- Decal: Tangent vectors calculation
- Decal: High level materials support
- Sound System: Property MinDistance for channels. The MinDistance property sets the minimum distance, which is the distance from the listener at which sounds in this buffer begin to be attenuated.
- Sound System: Division inside of the engine on 3D and 2D channels
- Sound System: Now by a call of method SoundWorld.SoundPlay(), the new object of class VirtualChannel is created. Earlier the free channel was used. There could be problems when parameters of the channel change during playing.
- For compilation of shaders in Direct3D now is used the hlsl compiler
- Camera: Orthographic projection
- SkyBox, SkyDome: Automatic distance calculation
- Gamma correction. Options in the game.
- FMOD 4.8.1
- SceneNode: Event SceneNode.AddCurrentToRenderQueue is removed. Now it is necessary to use event MoveableObject.AddToRenderQueue.
- Tank: For tracks now are used high level materials. The dynamic parameter in gpu program for animation of tracks is used.
- Textures: Now the loaded textures are destroyed by a call of method Texture.Dispose()
- Bug fix: Incorrect work of DecorativeObjects with switched on stencil shadows
- Bug fix: Incorrect work of class Character in PhysX. The character flies on inclined planes.
- Bug fix: UISystem: Invalid serialization of buttons for switching pages in TabControl. There was a duplication of buttons after serialization. It was caused in file Gui\OptionsWindow.gui.
- Bug fix: FMODSoundSystem: Incorrect work of FMODSoundSystem on the some SoundBlaster cards
- Bug fix: FMODSoundSystem: Leaks at disposing of sounds
- Bug fix: Gizmo: Not always true work in a moving mode
- Bug fix: Resource Editor: Small error at renaming materials
- Bug fix: Problems in working of editors if there are files with empty extension
- Bug fix: Item: Small problems in the Resource Editor at moving the attached objects


Shots from Holgmo's game:

02_drink_manapotion_medium_881.jpg

03_lightning1_cast_medium_314.jpg

Here's Holgmo's video-
If you want so see a short ingame-movie, feel free to download the file here:
http://www.workingclass2.de/downloads/public/NeoAxis_Project_PublicPreview/NeoAxis_Project_PublicPreview.rar


Holgmo,
Just a production question that I forgot to do: How long did it took with NAE to get to this result? Was it just 2 artist and 1 programmer?


We were 3 people working on that for ~4 months: 1 Programmer, 1 Artist and 1 Game Designer.
The second artist just helped us for some days for making the main character. He is a very experienced professional modeller/animator so it didn't take him too long to make it.

But to be fair: Before we started writing the first line of code or drawing the first scribble, we already knew what we wanted to do. So the work was very straight to the point - and we worked a lot more than just 8 hours a day.

So it is possible to make this in only some months with few people, but you have to know what you want to do and you need an idea how to do it.

NeoAxis had exactly the structure we were aiming for. So it was a perfect fit. As far as I can see, it's the best way to develop games.
But anybody may do as they like...




Q.Is it better to gather several mesh objects under a single entity or leave one mesh per entity?
We've tested here and it seems to improve performance to gather several mesh under a single mapobject entity. Is it supposed to be like that?
Someone had a similar experienc
e?



Yes.
It is better to have a minimum quantity of meshes.
The more the quantity of meshes, then is more quantity of batches (DIPs).

Also, for StaticGeometry it is recommended to use big pieces of a level (or all level in the one mesh). The engine will split geometry into pieces depending on the nodes sizes of map (Map.NodeSize property).



f I place my meshes in StaticGeometry will it still uses the LOD from the mesh? I though I read somewhere it don't... If it does, excellent! 

And in DecorativeObjetcs? The LOD from a mesh works in DecorativeObjects? If it does too, it would be nice. 


too thought above large vegetation and trees much.

So.

Way 1.
To do each tree as one Entity.
This way there is a full functionality (Collision, LODs).
But at a plenty of trees, such way to use is impossible (Big DIPs count)
When it will be realized "instancing" a limit on quantity of objects it will be reduced, but all equally cannot be made a plenty of objects in the on frame.

Way 2.
To do groups of trees as one Entity (use one mesh for all group).
It is similar to a way 1, but is less critical to performance.
For example, if you do group from 4 trees, you reduce quantity DIPs in 4 times (!!).

Way 3.
Use StaticGeometry.
StaticGeometry at present does not support LODs.
However, for StaticGeometry it is supposed what is it there will be a base of a level (for example a landscape and buildings). I would not tell, that StaticGeometry approaches for vegetation.

Way 4.
Use DecorativeObjects.
Feature DecorativeObjects that objects are united in big pieces (for example 50x50 meters) and render it is very fast.
DecorativeObjects are not realized up to the end.
LODs at present are not realized. In future LODs will be supported, but objects will be switched by all group (all piece). (In some cases it will be sharply and ugly.)
Collision also are not supported in DecorativeObjects. In the future it will be realized.
DecorativeObjects in the future will consider terrain and his layers (For example to be painted by similar color).



Q. Quote: To do groups of trees as one Entity (use one mesh for all group).

 I don't understand this, take your Maple tree for example, it would be faster if the Maple entity had
5, 10, many maple trees in it instead of just one?

Yes, it's true. We've tested with more than a hundred maple trees in single entities, then a lot more than that grouped into largers entities and it improves performance around 10fps.

What's a dip?

A. Too as batch. It Index-vertex buffer which sends on rendering to a videocard.
The it is less than them, the better. Usually in games it is used nearby 500-1000 DIPs on one staff.
You can see this quantity in "Performance counter" at the left and top.

Everyone SubMesh adds DIPs. If quantity of Submeshes minimal it is good.
If you wish to group trees it is better to make one mesh with one SubMesh for all trees in the group. I.e. all group trees as one a .mesh file.





Q. Do we have the right to release our "built" game using the sdk "Data" directory (which includes meshes, materials, etc from the sdk)

Or upon releasing the "built" game do we have to remove any SDK content.

Example: Could I build a game and release it with the FPS Demo map.

-Xposure


About effects.
You can use effects and their textures in the your game.

About models. You can use models for creation of the prototype of game. You can create a demo with models. Public in the internet or demonstrate it for publisher is not forbidden.
But you cannot use them for commercial purposes.



Sombody please tell me, how create cut-scene in NeoAxis Map Editor?


So.

I shall consider an example cut scene with the trigger (Region) (Similar to CutSceneDemo)

1. Create Region.type and scale it to the necessary size.

2. Select it. Double Click on the "LogicClass" property. It will be created logic class and region it will be attached to this class. (however it is possible to create a logic class manually).

3. Now you in LogicEditor. Now it is necessary to create event hander at hit of object in region. Click right button on your Region class. In menu: Create Method -> Event "ObjectIn" -> Designer Type.
You have created event handler.
This method will be called each time when any object will get in region.
You can add some action for test it. (for example Log.Warning("myTest"))

4. Further it is necessary to create a code of cut-scene. You can look CutSceneDemo and create same actions.


he Cut-scene demo is indeed your friend. You can find all of the basic code to make a cut-scene in that example. I'd love to provide a more complete example. I actually played around with the CutScene Manager pretty extensively when I first tried out NeoAxis. But I'm at a Mac right now, so no dice.

One note, you need to use a Logic Function in the logic editor to handle the timing of your transitions. If you attempt to fade cameras in or out, you need to adjust the timing to trigger the transition, then trigger again when the cameras need to switch. All of the spacing is defined by you.

Also, you can actually have any valid trigger kick off a CutScene. The demo has a region trigger CutScene, as well as a GUI-trigger Cutscene. (using a button) I personally managed to create an onMapLoad Cutscene, so the cutscene would begin as soon as you entered the map. (very useful for starting your game off with a cut-scene)

NeoAxis's extensive control over its cameras makes it a great engine for scripting cutscenes. You can use the Logic Editor to flip between as many cameras as you want, as often as you want. And the Map Editor lets you preview camera angles as well as create paths for them to follow. (for panning and zooming and other great camera affects)

The CutScene would be especially useful for scripting an intro for your game, or possibly an animated background for your main opening GUI.



How should I go about controlling animations of characters?

I have a proposed solution, and I just want some advice on how feasible it sounds. Currently, there is no real way to control which animation a mesh is playing, aside from those specifically built into the engine. I found most of the animation-specific code in the GameCharacter class. Would it be a good idea for me to make a new type, based on the GameCharacter class, and put my own animation definitions within it? Would I be able to automatically create an animation state for every animation that the character's main mesh contains? From looking at the GameCharacter class, it seems to me that this should be possible.

Also, I want to be able to trigger and change these animations from a different location. Specifically, I want to be able to script them in the Map Logic Editor. To that end, I am trying to create a "Director" type that is based on the CutSceneManager type. But while the CutSceneManager has properties and methods specific to camera control, the Director would contain methods for manipulating the animations and positions of this new type I would create. I've already successfully implemented this class, I just need to extend it with methods that can trigger animations.


Your ideas is good.

My addition:

Look method GameCharater.SetForceAnimationState().
This method plays animation ignoring others base animations for characters.

You can add in CutSceneManager an additional method.
CutSceneManager.PlayObjectAnimation(MapObject obj, string animationName).
And to cause GameCharater.SetForceAnimationState() by its call.

That, you can make support of animations in cut scenes for characters.




Q.Is there a way to apply a physics drop to only one object at a time in editor so it will fall and land on the ground right?

A. In "Entity Types window" there are buttons for the instruction of a way of alignment of new objects.

 
Also there is a button (Automatic alignment of objects) for the instruction of automatic alignment (for example if you have changed a terrain or have pressed the button "Update alignment of object" on the main toolbar).


Note October 15, 2007-That in the future objects were leveled automatically, it is necessary to switch on the button "Automatic alignment of objects". Or to change property "AlighmentMethod" for already existing objects. Meaning Betauser
hasn't put in 'objects fall to ground' yet.


Q. Map editor crashes, this is in /Logs directory
Info: Loading zip archive: Data\_Tests\ZipArchiveTests\Archive1.zip.
Info: Loading zip archive: Data\_Tests\ZipArchiveTests\Archive2.zip.
Info: Loading zip archive: Data\Materials\Game\cube_skybox\cube_skybox.zip.
Exception: System.NullReferenceException: Object reference not set to an instance of an object.

A. If you have .zipped up any content that is not an OFFICIAL neoaxis zip file, (whatever that is) you'll crash the map editor, so delete or move the homemade zips.




When I try to make a joint (the wrong way, no doubt), it tells me to use the context menu after selecting 2 bodies. How do I get the context menu? Right clicking gives me nothing, and it doesn't appear to have any method for doing this on the pane on the right side of the screen.


select 2 bodies(not shapes) and right click over one of them with your mouse and the context menu should appear with the all types of joints available in neoaxis.. pretty simple


Q.1. what is the scale?
A.If you are using the 3dsmax exporter that comes with neoaxis( the one that is just script) not the lexiexporter... if you are using that exporter the one that says recommended... set 3dsmax to meters and 1 meter in max will be 1 meter in neoaxis.. i use that exporter 3dsmax 8.. without problems


Q. What's in Neoaxis 0.51?

NeoAxis Engine 0.51 Released!

- Depth shadow mapping. Soft shadows. Self-shadowing. Correct shadows from alpha test objects. Correct shadows from Vegetation material.
- CutSceneDemo, TPSArcadeDemo, MainDemo are updated
- HeightmapTerrain: Normal Mapping
- HeightmapTerrain: Smooth transition between materials LODs
- HeightmapTerrain: The way of calculation uv coordinates is changed. It is more convenient, when the texture stretches on all map without tiling.
- All materials in a demo are changed to high level materials
- ShaderBase material: "Add", "Modulate", "ColorBlend" blending are removed (do not confuse with blending of diffuse maps). AlphaAdd blending is added. It is necessary to change manually in all material files "blending = Add" to "blending = AlphaAdd". Be attentive!
- ShaderBase material: Diffuse map blending: ColorBlend is removed
- ShaderBase material: Scale property for textures
- Physics System: Opportunity to switch off collisions for any shape pair. PhysicsWorld.SetShapePairFlags() method.
- Physics System: The formula of calculation of Bounciness is changed at collision of two shapes.
- Earlier average value calculated. Now calculated as product. bounciness = shape1.Bounciness * shape2.Bounciness.
- StaticGeometry: CastShadows property
- Region: Opportunity to consider static bodies and objects without bodies
- Region: CheckFilter, ShapeType properties
- CutSceneManager: Method for playing animations of objects. CutSceneManager.PlayObjectAnimation() method. See example in the CutSceneDemo.
- DecorativeObjectManager: Now a directory \DecorativeObjectManager does not delete at serialization of a map. For correct working of svn, cvs.
- Resource Editor: Directories with a name cvs and .svn now for convenience are painted with gray color. Opportunity to add other filters in Options.
- FMODSoundSystem: For Windows Vista now Windows Audio Session API is used. Earlier DirectSound.
- OGRE 1.4.5
- FMOD 4.8.6
- Decal: Now leave at destroying of parental object
- ComboBox: Enable property support
- Entity System: [FieldSerialize] - Support of types sbyte, byte, short, ushort, char, long, ulong
- Configurator: noSetMaxFrequency renamed to allowChangeDisplayFrequency
- Automatic choice of optimum settings at the first start
- Lights: AttenuationRangeAutomatic property
- Sound System: More correct working on the some bugged soundcard drivers
- Bug fix: HeightmapTerrain: Fading of detail maps by distance does not work when LODs are switched off
- Bug fix: Incorrect working of DecorativeObjects in OpenGL
- Bug fix: GridPathFindSystem: The motion map does not ignore NoContact shapes
- Bug fix: ShaderBase material: Incorrect working of AlphaBlend at the switched on fog
- Bug fix: PhysicsSystem: Invalid working of methods Body.IsContainsPoint(), GetPointDistance() when shape has not default Position or Rotation
- Bug fix: Region: Incorrect hit detection of object when ShapeType = Capsule and CheckType = Center
- Bug fix: Region: Absence of serialization of property CheckType
- Bug fix: Mesh Editor: The wrong information about quantity of triangles in a .mesh file
- Bug fix: Incorrect working of IndexData.CreateFromArray() at startIndex != 0
- Bug fix: Resource Editor: Error of playing of some .wav files
- Bug fix: Error of working with some archives when archive does not give the list of directories.
- Bug fix: Sound System: Repeated playing in the attached sounds
   


Q. My specular maps aren't  very shiny.

A. In Resource Editor, the .highmaterial-specular map area there is 'SPECULAR SCALE' 0 is not shiny, 255 is max shiny. Also putting
specular shininess of  0 makes it way too shiny.


Q. How do I upgrade to new versions of Neoaxis?

A. It's pretty easy, the only things you need to copy from the old Neoaxis are your own stuff in /DATA
directory, this could be /Maps , /Types/ Decorative Objects, /Types/StaticObjects, /Types/Units,
Materials/Game (where I keep my skybox textures)  If you're just staring to add content,  put all your data into 1 subdirectory, like /Data/Mydata/, I would, but then I'd have to go back and edit all the .material texture paths.





Q.  051 says normal maps on terrain, didn't see any
examples though.


A. Ok.
You need see terrain layers (Layers property).
Every layer have NormalMap and NormalMapType properties. You can configurate normal maps via this properties.
NormalMap - path to normal map file.
NormalMapType - enumeration. Choose Base or Detail maps. (I.e. if this property "NormalMapType = Detail", then normal maps affecting to detail map).




Q. Also, I noticed shadows
on the terrain, is this using a light with shadows enabled?


A. Shadows for terrain is enabled by default.
You need only set property "CastShadows = true" for your lights
.


Don't forget to put 'lighting', 'receive shadows' and 'use normals' on your highmaterials if you want shadows on them. However, putting normal maps on transparent highmaterials turned them all black.

Q.

I'm back with my newbie questions again...

Problem 1:

I'm having difficulties understanding the purpose of the Type class.

Is the Type just something to tie my new class to an Entity in the ResourceEditor/MapEditor?

If so can't we just connect our main class to an Entity? Why do we need a Type class in the middle?

Everything in the Type class is visible in the ResourceEditor?

Should I think Type as a constructor for the Resource Designer? We allow Resource Designer to use the variables and methods visible in the Type to construct many instances of our class but only with properties visible in the Type-class?

Could this be achieved by just showing all things in Resource Editor declared as public in our class? Why do we need the Type at all
?

Are the comments in the code below false or correct?

<code>
namespace GameGeneral
{
public class SpaceshipType : MapObjectType // this means all the varibles&methods on MapObjectType are visible in ResourceEditor?
{
string mOT ="Default message"; //My addition to the basic MapObjectType. Message of the day

public string Mot // <-- this is visible in the resource editor and not he variable itself
{
get { return mOT; }
set { mOT = value; }
}

}

public class Spaceship : MapObject //We can use all the attributes/methods of MapObject-class in Spaceship-clas
s
{
SpaceshipType _type = null; public new SpaceshipType Type { get { return _type; } } // connects this class with it's type

//previous line tells ResourceEditor that it should use/show SpaceshipType-properties, when Spaceship-class is added as a resource


protected override void OnPostCreate(bool loaded)
{
base.OnPostCreate(loaded);
Log.Info(Type.Mot,""); // <-- I access the data that has been set with MapEditor through Type. ?
}
}
}
</code>


Problem 2:

In my project I want to create a keypad, that has a GUI component in it. A frame with a TextBox and an ok-button.

I created this UI DoorTerminal.gui. Then in MapEditor I put a Terminal-object in the map and set initialControl to DoorTerminal.gu
i

Now I can see the Terminal and my UI inside it in simulation. This is where I got stuck Sad How can I detect the keycode from the textbox when ok-button is pressed and unlock the door near the keypad if the code is right?

I started over and created a class with visual express DoorTerminal.cs. This is the class that should take care of any logic behind this keypad.

I used MabObjectType and MapObject classes, because I want to put this thing on my map. The Type should be chosen based on what properties you want your Entity to have in your map I guess.

My Type-class should have a variable int doorkey and a variable for the doorname, so map designer could set the right keycode for the panel and to set the door that would open. These would be accessed in the DoorTerminal.cs to determine is the right key typed and what door to open (find Entity with the door name).

I created a new Entity in ResourceEditor and set it's type to DoorTerminal. Then doubleclick it and attach a GUI to it. GUI is now attached, but I can't tell what GUI to attach... There are no options to attach a named gui to it (DoorTerminal.gui).

I don't want to do this with logic editor by adding on keydown event or something to my DoorTerminal.gui

How can I create this keypad to unlock door? I'm pretty frustrated at the moment...

-Wellu

(not answered yet)

Q. Today I dropped a house into the skirmish demo to test something. I never saved the map, assuming the house would disappear when I closed the editor. Now I can't get the house out of the demo.


A. Well that is simply not true. You can of course delete things from your maps at any time.
Maybe you put it in different layers and protected them? (Look for the red crosses on the right side of the layers list - click on them to change status.)

If the layer is unprotected (no red cross on the folder) just mark the object you wish to delete (on the map or in the list), press "Del" and click "Yes" in the dialog.

Q. I have this strange bug, a bit difficult to describe.
When I start editor or demo the logo fades at 1 fps.
Then if I click on the menus the same problem: mouse pointer moves at 1 fps and everything slows down immensely.
This is also valid if I station with the pointer on any icon and the popup help comes out.
Anything dynamic in the editors will make everything slow down to hell.


A. I too noticed this problem on some ATI cards. Yet has not found the reason.
By the way in OpenGL such problem is not present.


think this was a problem before (.46 to .47?)...the solution seemed to
be removing old demo installs, so perhaps that is why yours is now
working? (because of the uninstall)



how_to_model.jpg

Q. I converted them in .mesh with OFusion and they show fine both of them in NeoAxis. There are no "artefacts" or "jags" in the first one. So my question is what should i do ? With what technique should i model ? Model with hidden surfaces and low poly number OR model with no hidden surfaces but high poly number ? What is faster ? Is OGRE engine takes more time to compute the hidden surfaces with lower polys OR is it better to fix all polys with no hidden surfaces but then the number of total polys is increased dramatically ?


A.
If there are overlappings, then you have more working time of fragment shader.
If there are superfluous triangles, then you have more working time of vertex shader.

What it is better?
It can be learned only experimentally.


I don't know about graphics cards, pipelines, but how are you going to texture map the 24 poly one?




Q.Hey for some reason in a map that I made it won’t let me select any objects. Like a ball or a ring or pipe. It lets me pick objects in other maps but not mine. Any ideas?

A.Sounds like you have enabled "write protection" for that layer.

Look in the "Layers" Window. If the small yellow icon has a red cross on it, the items in that layer are not selectable on screen. Just click on the icon to change status. Without that cross all items should be selectable.

It's a small feature that is easily overlooked or mistaken for a bug. But I have learned to like it very much by now. You can prevent things from being moved by accident but still see them on the map.

Q. What's the Plyushkin syndrome?
http://clockwork-brains.blogspot.com/

A. First 'real' game made with Neoaxis, from Latvia. A remake of "Lode Runner" You have to collect all the
duct tape while making the bad guys fall into cardboard boxes.

plyushkin_bot.jpg


level_plyushkin.jpg

star_wars.jpg

NeoAxis Engine 0.52 Released!

- Static lighting manager. Lightmaps support. Integrated tool for lightmap calculation (at present only HeightmapTerrain is supported).
- The interface for implementation another calculation algorithm of static lighting
- StaticLightingDemo (is not finished)
- Scene Management: More exact and faster scene management for generation of shadow textures
- Dynamic class: Sound collision detection is improved
- Shadows: Shadow color for the ShadowMapHigh shadow type
- HeightmapTerrain: CastDynamicShadows property
- Map Editor: "Enable dynamic lighting" option
- Physics System: Internal optimizations and reduction of use of the Garbage Collector
- Map System: Reduction of use of the Garbage Collector
- MathEx: Big internal optimizations
- MathEx: The optimized methods passing values through ref, out parameters are added
- MathEx: Some missing methods are added. The duplicated methods are removed.
- Bug fix: Incorrect working of shadows with fog
- Bug fix: HeightmapTerrain: Incorrect working of the editor after change of layers
- Bug fix: Sound System: Possible falling of the application at change of property ChannelGroup.Pause
- Bug fix: MathEx: Incorrect working of Box.GetVolume() method
- Bug fix: UISystem: Leaks in not removed references in events. Potential bugs.
- Bug fix: Physics System: Invalid working of method Shape.IsContactableWithShape() with use ShapePairFlags.DisableContacts flag


physics_capsules.jpg


rabbit_physics.jpg

A few physics capsules, mesh should be inside the capsule and feet at the level of the
bottom of the blue column.

Q. How many polygons should I have in a scene and still have a good fps?

A. It depends, on my 1.5 ghz machine with a 256 geforce, the neoaxis tank demo comes to a stop
where all the baddies are, but Battlefield_2 rarely even chugs. Here are some sample poly counts from
Battlefield 2 Zatar map:
http://terrymorgan.net/battle_2_poly_counts.html

You can probably assume Battlefield 2 is better optimized than Neoaxis.

Q.
Yesterday i tried to export a simple box from Max 8 and got the .mesh displaying on the Resources Editor, but only without the texture. I only need to put the texture file at the same location of the .mesh?

Another question: how can i generate material files?

A.
Creating material file:

- open Neoaxis resource editor
- right click some folder and choose "New Resource"
- choose "Material"
- choose "Next"
- put name to material "yournicematerial"
- select "ShaderBasedMaterial"
- Next & finished

Now the material should appear in the editor.
- Double click the material (to edit it)
- Expand "Diffuse1Map"
- Select "Texture" (and locate the texture your model uses...)

After this... last thing is to ensure that your exported box uses the same material.
- Edit your .mesh file
- click "submeshes"
- make sure the material is same as your newly created material

Yeah don't forget that NeoAxis treats the root of the "Data" folder as root for all content in the engine. So to reference a texture in the static object folder on your computer like:

C:\NeoAxis\Game\Bin\Data\Types\StaticObjects\OgreHead\OgreHead_Specular.jpg

In NeoAxis to reference this texture you just need to do this:

Types\StaticObjects\OgreHead\OgreHead_Specular.jpg

Without the leading slash too, that took me a while to figure out. Not sure if you having that problem as well. Only ran into this when exporting huge mesh's with hundreds of sub-meshes and textures.

Q.Sometimes I'll copy my layer1, 2, 3, mask.png's into the neoaxis
data directory and The editor turns them all black with a filesize
of 1,118 bytes. I have to copy them 3 times or more before neo editor will swallow them.




A. As a workaround, you could mark them read-only. That works, except it won't save your
mask .png's when you run the game. (Not that they've changed).


Q. i was trying to export an animation of a character that i donwloaded by free yesterday. The problem is it uses the Physique modifier and im not sure if the exporter supports that because i get the following error: "GetBoneCount is undefined". Searching the web, including Ogre forums, i realized that Ogre supports the modifier, but and about NA? Can i use other exporters to import into NA? I've also noticed that some users in this forums got it working, can you tell me how to do that?

A. for those who want to anim your characters/objects, just replace the Physique modifier for the skin modifier, it works perfectly. =P
 

Q.
Help Please!

with the conversion of files from 3DMax faced with the challenge
...


A. I work with Ofusion. It is a nice little program. I like it alot better then the other exporters. Only problems I have is them being sideways. And faceing the wrong way. Also being to big. But either way it exports models real good.

I have to manually remake my texture materials. But that isn't really to big of a deal. I can deal with it.

Some tips that I use to make models with it. and export them.

When you export them. You will have to useally rotate them. to make them face right. To do this. Go to rotate. Then in the first box. Click -90 then click ok then do it again then click the Z axis and -90 again. That will make them face the correct way..

2ndly to make them the right size. Same size as your model in max. Click scale. the put in .1 in each box. that will useally make them the right size you need for your model. If they are two small. Resize them by 5. Not .5 but 5 5 5 It will make them half the size as the normal size.

Make sure you have max open when your ready to retexture them. You will need to name your materials.

I find it easyest to name your materials and number them the same numbers at the multisub-object materials in max. Make the first one the same texture as your first. And so forth. Then go into your model and use the same materials that corospond with your materials. It doesn't take long to texture them when you do it that way. And can take the first name of the first material. Copy the name to that. then add the number at the end. I am not sure if this is what you ment but I hope it helps you.


Q. I downloaded the non-commercial sdk. when the demo gets to the particle effect screen. i hit the mouse button. which brings up the run button screen. i click on the run button. i get the loading map message. then i get kicked to desktop with the following message box.

"Game

Unhandled exception has occurred in a component in your application. If you click Continue, the application will ignore this error and attempt to continue.

Access to the path 'Data\Maps\MainDemo\_StaticGeometryCache' is denied."

now i did run the Configurator app before i tried the demo for the 1st time. i had changed the AF to x16, PS and VS to 3.0, resolution to 1920x1200x32. after the crash i tried again with the defaults but kept the same resolution but still the same result.



A. Yes. This is security bug.

You can install NeoAxis to your Windows desktop or other directory. (But not in the Program Files).
Or you can disable security service in the Windows Vista for prohibitions writing to Program Files directory.

I shall fix it in following released(0.54-0.55)

Please, for the love of all that is good and sacred don't require stuff to be put in /Documents and Settings


You bet that this will be necessary. I don't think that there is any other way because you are SUPPOSED to do so. MS does everything to get you there.
So secure that you can't work with that OS anymore.

I use XP. I don't know anything about Vista.

Using Vista, if I were to create a dir called 'c:\Programs', and install NA there, I should be able to bypass this Vista (now contaminating XP) issue. Right?

While I sure MS thought it was cool for users to have more than 1 login so that children could have a SpongeBob background or wifes could have a shortcut to Aunt Nellys email on the desktop, its freaking hateful to have to deal with a multi user environment when I don't need it at all. I wish I could delete everything in '/Documents and Settings' and remove it.


Q.
. I initially assumed that since Neoaxis uses Ogre for rendering, it can pretty much do what Ogre can graphically. Now I just read through a thread about blocky shadows in Neoaxis, and I'm pretty sure that Ogre can handle shadows pretty well. So what is it? Is Neoaxis capable of whatever Ogre can do or does it have to be implemented into the engine?

A. NeoAxis is using Ogre, but it may be using an older version of Ogre. I'm not sure how up to date it is. Additionally, Ivan has written a C# wrapper around Ogre, and has perhaps decided to only wrap certain parts of Ogre.

Also, Ogre supports a lot of features and comes with a lot of examples, such as several ways to do shadows, but that doesn't necessarily mean that those examples are ready to just drop into a real game. They're mostly just tech demos, and it requires the programmer to take them and expand upon them to be more useful.

So to answer your questions - NeoAxis is capable of doing what Ogre can do if Ivan has wrapped those features in his wrapper, tested them and ensured they work within NeoAxis, and exposed those features through his API as well as within the resource and map editor.






Q.I'd like to use a new weapon model in my game.  for the purpose of this,I have made a new MeleeWeapon type named sword.type.  then I updated my character's weapon list to attached it.
but why I can't pick it up in the game?


A. If you want to have to sword as soon as you start the game use this in PlayerCharacter.cs

protected override void OnPostCreate(bool loaded)
{
base.OnPostCreate(loaded);

if (! ( EngineApp.Instance.IsMapEditor || EngineApp.Instance.IsResourceEditor ) )
TakeWeapon((WeaponType)EntityTypes.Instance.GetByName("sword"));

}

Or insert a WeaponItem in your spawnlocation like msg_gol said



Q.Well, I noticed that the Max exporter is based on 0,0,0 world coordinates, which makes completely useless the pivot point.

But, if it must be this way, the possibility to choose which mesh to export from the Max file is completely useless because the pivot point in NA will result far from center.

So as a feature I am asking to export the mesh using the Max pivot point of that mesh instead than using as pivot point the world coordinates.
Maybe this can also be added as a choice for the user if to use the mesh pivot or the world coordinates.


A.You need to select your object in max. then go to the Hierarchy tab. in the effect pivot rollout click effect pivot only. Then click on center to object. then it wll place your pivot into the center of the model. Then just export it like normal. And you will be all set. The pivot point will be in the center of the object. Just turn the object the correct way to be set in neo axis after export. I useally have to put -90 in the x part. then -90 in the z part of the rotate model button in neo axis. .But what we really need is a way to turn the model with only one button. -90 in the x slot. and -90 in the Z slot. all done will one click of the button.

But I do agree that there also needs to be a way to move your pivot point to the center of the object in neo axis too. Incase you export something on accident. without the pivot point being in the center.



Q.Sorry to ask but i cant figure out how to get Lara to jump faster and to land faster. Its sluggish for a person to jump and land slow.

Well for the rabbit it was ok.

edit: i just went in the phyics room, toned up the gravity to far end right and she jumps and lands fast. How do i make it permant?

A.you should decrease the gravity so please add this line to your code

Code:  ‹ Select ›
PhysicsWorld.Instance.Gravity = new Vec3(0,0,-9.81f);


you see that -9.81f that’s the gravity decrease it to -5f or maybe -2f

You have INcrease the forces (e.g. gravity) to get higher acceleration.

If you want a faster jump and a faster landing, you have to add a force when jumping and INcrease gravity for faster landing.

General rule: More force => higher acceleration. Like in real life.






Q. I am playing around a bit with the Map Editor and discovering the wonders and joys of putting objects alltogether in order to make a new scene.

After playing a bit with the ready-made models, I wanted to try something new [ie, importing my own].. therefore, I decided to 'build my own scene' and 'see what happens'.

I have this .3ds that represents a small house. Four rooms, a corridor and some pretty textures applied on it. My goal is to make the gameplayer walk inside the house, visit the rooms and such stuff.

I successfully converted the .3ds in a .mesh and .material files. I created in

E:\Programs\NeoAxis Engine Non-Commercial SDK 0.53\Game\Bin\Data\Models

a new folder called 'House' and put the house.mesh on it.

I then created in

E:\Programs\NeoAxis Engine Non-Commercial SDK 0.53\Game\Bin\Data\Materials

a new folder called 'House' and put the house.material on it.

I open the map editor, add StaticGeometry press 'edit', browse tree, catch my house in my models folder, click on it.. and wonder.

I do not see the cursor magically change into 'my' model as usual.

I anyway try clicking [you never know] and 'nothing' happens, except one error. I try to run the simulation too and here's the error:

***************************************
A big node count on a map!
Count: 120 x 134 x 41 = 659280.
It is necessary to increase the size of a nodes (property Map.NodeSize)
***************************************

NA is clearly [and, probably, righteously too] complaining about the model I'm willing to use for my tests :/

So *gosh* what am I supposed to do? Someone hinted me to split the .3ds in two or more smaller parts, however I am not sure on how to do so.

On the other hand, the error itself hints me about "increasing the size of a nodes (property Map.NodeSize)" and about it, same as above, not really sure about where to put my hands on.


Is it a common problem when trying to import 'huge' objects or am I getting the whole thing wrong here? What option is better in your opinion?

Note that I did exactly the same with the simple-cube.mesh and it perfectly worked [didn't use any .material file in the cube's case].


A.You need to increase Map.NodeSize.

Problem in the following. All map is divided on octree grid with the cell size is equal Map.NodeSize.
In your case you have very big map. The map has big dimensions and it is necessary much nodes for this purpose (if they small).

You need increase size of nodes via Map.NodeSize. For an example you can set "200 200 100".




Q.When I put this gamecharacter in the map,when the game starts it
appears about 200 yards from where I placed it. I made it in Softimage at 0,0,0 same
as the staticobject cube, which doesn't move at game start. Is this a gamecharacter bug?



A. does its physics model somehow collide with some map(object) physics?
i observed this kind of "jumpy" behaviour, when a character "hits" sth at mapstart (or when placed the physics "into" the other object).



Yep if it has a physics model. Or if you put the object to collision it will jump all over the place. You will have to Shrink the physics model. Make it really small. Then put physics boxes around the model itself on the outside. So the model wont be touching the center physics model. Personally. Some one needs to make a Building type that can use animations.

The engine simulate physics at start (only a few steps), to ensure everything is stable before, beginning the "real" simulation.
To avoid an unpredictable behaviour at beginning, you can mark the main body of your model as static, and de-static it at first tick. You can do it all programmatically (see Character Code for an example).


Edit physics is grayed out, can't edit the capsule, I get a capsule
no matter what. But I turned off 'to collision' and it stays put now,
unless I bump it. I don't want it to move and I can't delete the physics capsule, does the physics capsule make it move when bumped? The process for doing animated models by the
'windmill' method looks way harder than softimage, which was
actually made just for that purpose.

I also made a gamecharacter body, when I bump him he goes
flying, I guess I need to get rid of 'to collision' on him also.

Increasing mass of character will make him immovable.


Q.I know how to create a map and add objects [weapons, boxes, zombies, etc]. However, I wanted to tweak a bit the maps/FPSDemo. Being more specific, I wanted to add/delete objects into the house. I then tried everything that came into my mind, but I wasn't able to enter or directly edit the building. Is there a chance to, for instance, add a box in a particular place into the house [like, right in front of the stairs or in a corner in the first floor]?


A. The map editor only accepts game entities that appear on a list on the right.. to make a game entity you need to make it in the resource editor.. then there you can add meshes, particles and so.

Your probably had problems with the house boundingbox. Put the house mesh on a separate layer and lock it for editing. That way you will not select it by accident.

The buildings in the FPS demo are static geometry.

Just place your house mesh in to the map in Map Editor. Then "drive" in with WSAD keys and place more objects. Then if you want to fine tune the position just type in new values by hand. There is a Position property for all mapobjects
I open the map editor. To 'select' the building, I click -for instance- on a door/window. I click on 'focus camera to object' in the top menu.

I get closer to the door/window, which is good.

Then the magic keys help me navigate. The problem is the following: I would like to navigate the model [into the map editor] and place a, uhm, wooden box right in the middle of a certain room [let's say, the one with 3 switchboxes, ground floor].

To do so, I have to select the window next to the door, 'focus camera' on there, and press W.

Problem: it goes underground. I then go 'back' and the angle is somewhat 30 degrees from top to bottom. I tought I could somehow 'walk' into the house by using controls and place objects here and there, however I can do it with a bit of hacking and lots of lucky attempts only at this moment. It's why I said it's not easy to navigate this way.

Then again, your 'turn with left mouse button' made me all giggly and extremely kawaii-looking. This is EXACTLY what I was looking for.


A quick tutorial on getting your mesh into neo

copy your mesh, skeleton if animated, and texture bitmap to a directory under
DATA, I put my stuff either under /staticobjects or /units depending on their type.

In resource editor

make a new resource, material,  mymodel_mat.highmaterial, a highmaterial, add the mesh's texture, under 'diffuse1 map', should be a textured cube showing, make a new type gamecharacter  'mymodel.type'  edit it, RIGHT CLICK-EDIT, right click in the viewport /attach object/mesh, pick your mesh, now scale, rotate, position, get him moved to the bottom of his physics capsule, If his physics capsule
is not at 0,0,0 (in the center of the gray/white checkerboard re-export the mesh.

There's 2 parts to the /type  the /type (brains and parameters) and the mesh, in 'mesh' go 'force submesh
materials' ADD, here's where you add the highmaterial.

Now leave 'to collision' FALSE unless you want your mesh to go flying when it
gets bumped. I heard changing his mass to BIG will keep him from getting bumped also.

Change 'allow editor create' to TRUE, why is FALSE the default?
Put the animation name in the IDLE and Walk animation names.

Save CTRL-S, open up the Map editor, go entity types, drag him onto the map.

Q.SOFTIMAGE XSI TIPS?

A. What to watch out for when exporting models into OGRE.

    * Texture files must have no spaces or periods in their name
    * A texture must have only one texture support. Having multiple texture supports and texture projections on one object will not work in OGRE. OGRE will use only one of them.
    * OGRE accepts only RealTime shaders (eg., OGL 1-pass), XSI shaders such as Phong, etc, will not allow the model to be exported
    * The number of materials should be kept down as well, as too many materials overload the file. Instead of going to Material picking the material and then Texture for each group of objects, you can just set the material for one object and use Material>Assign Material for the rest of the objects in the group(select the object with no material, go Material>Assign Material, pick the object with a material, open the render tree(7) and select a texture projection for it).


    * Animation must be skeletal UPDATE =shape animation (vertexes only, no bones) is now supported.
   
    * When a very simple non-character animation needs to be done(like an opening door) then you can avoid using bones to animate that part, and simply export the parts separately and move the mesh in code inside OGRE
    * When exporting object with animation make sure that the Mixer belonging to that model has animations in it. Open Mixer (Alt0), select object, click update button. If there are no animations in the Tracks then right click on an animation track and load and animation From Source. The animations that you pick to be in this mixer will be exported.

    * Remember to check your model in OpenGL View mode, to make sure the lighting is correct.
   
    Textures:

A texture might appear in xsi but not ogre. Always check the uv maps in Texture Editor(Atl+7). If it's not mapped over the texture, select it and translate it(v) to the image. To edit the way the texture looks edit the texture projection not the image. Playing with w coordinates is helpfull. It's better to edit the texture image before using it in xsi. One of the encountered problems - the cropped image in xsi texture editor was not cropped in ogre.

Animation:

Sometimes the animation doesn't play when you scratch the timeline. To view the animation look under Mixer (in the explorer(8)). If there's no clip right click on an empty track and get clip from Source. The clip has to be saved previously. Always save the animation under Animate>Store Actions.


February 12, 2008
NeoAxis Engine 0.54 Released!

- New philosophy for creation of static geometry. StaticGeometry entity is deprecated and replaced by StaticMesh entity, which from now on should be used to create static geometry. Now you can use layers and modify objects with editor gizmo together with other map entities. Optimizations of StaticMesh for simulation. Automatic tool for porting old maps (here in sdk "SDK\Tools\StaticGeometryToStaticMeshPort").
- Support of older video cards and integrated cards. (Tested on GeForce MX 400 and Intel 82845G).
- Physics System: For VolumeCast is not need create volume body now
- Post Effect: Radial blur
- Documentation: "Tutorial: Creation of a New Map" is updated
- GuiRenderer & UISystem: Opportunity of rendering behind scene
- Configs: Settings for fullScreen, videoMode, verticalSync, allowChangeDisplayFrequency are moved from Game.config to Engine.config
- Configurator: Now changes only Engine.config
- Configurator: Opportunity switch off shaders for OpenGL
- GameMapType: Properties CameraDistanceRange, CameraCenterOffsetRange are removed
- SpawnPoint: Methods GameMap.GetRandomSpawnPoint, GameMap.GetDefaultSpawnPoint, GameWorld.GetFreeSpawnPoint are moved to SpawnPoint class
- Item: RandomItemCreator type is deleted
- GameMap.NeedExit is moved and renamed to GameWorld.NeedWorldDestroy
- WaterPlane: Faster rendering on old video cards. Using "half" in the fragment shader.
- Platform.dll is removed. All functionality moved to EngineApp.dll.
- EngineRandom class is renamed to Utils.dll
- ShaderBase material: Improved working for DiffuseScale != (1,1,1) for fixed pipeline
- ShaderBase material: Improved working for emission map for fixed pipeline
- RenderTarget: Rendering to memory. RenderTarget.WriteContentsToMemory() method.
- Camera: Methods Camera.SetFixedUpAxis and ResetFixedUpAxis are removed. Now is need to use property Camera.FixedUp
- VideoBox: More stable working
- Sound System: Running on the computers without sound card will not error
- DecorativeObjectManager: Moved to separated DecorativeObjectManager.dll
- EngineApp: Working with application window at startup is improved
- Sound System: Working on the some bugged sound card drivers is improved. Changing volume problems.
- PhysXPhysicsSystem: Faster raycast for dynamic bodies
- PhysXPhysicsSystem: Ready for Mono port. Rewritten from C++/CLI to C# and PInvoke.
- DirectXSoundSystem: Ready for Mono port. Rewritten from C++/CLI to C# and PInvoke.
- Map Editor: Faster working for scaling entities by means gizmo
- Bug fix: Strong performance loss at use boneslots in the attached objects. It is shown on the characters and especially in the TPSArcadeDemo.
- Bug fix: PhysXPhysicsSystem: Incorrect working of RayCast. Arises when we manually move bodies and do RayCast between two ticks of simulation.
- Bug fix: StaticGeometry: Objects selection problems after moving
- Bug fix: PhysXPhysicsSystem: Incorrect working of RayCastPiercing for Mesh and HeightField shapes. Finds only the first collision.
- Bug fix: DebugGeometry: Incorrect working of AddVertexIndexBuffer() methods
- Bug fix: Entity.RemoveRelationship() "null reference" problem
- Bug fix: Character: Incorrect working for extra tall characters
- Bug fix: SoundSystem: Small bug after changing volume in enclosed ChannelGroup
- Bug fix: Map Editor: Incorrect reset of selected node in TreeView. It is shown in the Entity types, Decorative object manager and Static geometry forms.


PS. Sorry for 4 day delay. New StaticMesh has demanded additional changes before release.
PS2: GoGoGoQ.

Q. What is, and how do you edit the physics capsule? Smile


A.  The large capsule is the character collision, the stick is another capsule and it's for the "step" or "standing" collision, it's the center of the character and height.


You edit the shape of it in the type editor. Not the physics editor. Just turn on show collision. Then just change the height in the properties window. To make it bigger. You can also change the Radius of it with the Radius property.. Though truthfully would much rather use the physics engine to do this. It would make it alot better. And easyer to handle.

Make sure it is

Hight >= Radius * 2 + WalkUpHight


Q. How do I make a large level in 3dsmax?

A.
Oh, that's simple, and that's how I do it too:D

When u export with NeoAxis, it will automatically create submeshes based on the materials (textures) used.
So, for example, u have a box made out of 6 Polygons. Polygon 1 will have assigned in MAX Texture01, Polygon2 will have assigned in MAX Texture02 and Polygon3, Polygon 4, Polygon5 will have Texture03, while Polygon6 will have no texture assigned to it. After u export it, in resource editor, u will find that when u go to the mesh, u will have all the polys with Texture01 (in our case Polygon1) in one submesh (Submesh01), all the polys that have Texture02 assigned to it from max will be in another submesh, those 3 polygons with Texture03 will be in Submesh03 and the Polygons with no texture applied to it will be in another Submesh (Submesh04).
Then u can manually apply texture onto each submesh in the resource editor by clicking the Material name under each SubMesh.


Btw, now that u brought this up, I wanna share with u a technique for map building. If used properly, it will save you time, harddisk space, and will probably increase performance.
Let's say u have a 5 story building. The ground floor is unique, and so is the cealing. But floor 1, 2, 3, 4 are absolutely the same (unless u wanna modify their textures). Rather than building all the 4 floors in MAX, u can just create and export the 1st floor (when creating it, keep in mind what ur going to do, and adapt the model for this) and when ur in the Map Editor, just put it there 4 times, one on top of the other. Positioning it is not THAT difficult, it's certainly WAY faster than doing it from scratch in MAX:D. Also, u can use the same floor, to 10 story buildings that have the same floors as the 5story building u've just created. This way, u won't have to build each type of block from scratch. 1 floor can serve for 100 buildings

You must create different materials with different names.
Then you select THE POLYGONS and apply the material you want on those polygons.
When you export, it's automatic that if a mesh has 3 materials in it you will have 3 materials in NA.

Hm. But what about UWV maps?
I don't think that I can apply separate UVW map modifiers to polygons?

I mean, floor maybe needs UVW map to tile texture 4 by 4, but ceiling texture is one piece, etc. For things like this, I apply UWV modifiers.
I don't think that it's possible for polygons that are part of single mesh. Not in 3ds Max.

Also, I can't test it out yet, but I wonder how OGRE exporter and NA handles multi/sub-object materials from Max and mapping channels?
Maybe that would be answer? I can change separate mapping channel for every poly(-group) and straighten it out in Max's material editor, and use use Multi/sub-object material then?

Or maybe I can make everything as separate mesh, UWV and texture each bit, then convert one mesh into editable mesh or poly and attach everthing to it to make one big mesh. I know that Max will preserve separate materials, mapping coords (I think) and material ID's...
But will NA detect submeshes then?

Another question: Does OGRE Exporter / NA detect material properties from max and which ones? Like transparency, specular level and glossiness, shader type (metal/blinn/phong/etc) and so on?




This one is the mesh's screenshot in the 3dMax,it is foursquare.The arrow is the direction.

Image

And then I export it into resource editor with the LexiExporter.It's become rectangular.I did nothing when exporting.

Image

What's the problem?Is there some options that I did not select in the exporter?What shall I do?Thanks.


Or better yet here is the link. http://www.ofusiontechnologies.com/

This exporter is much better then lexi. It works great and exports the meshes well.

But to tell the truth. I think I know what your problem is. You need to reset the Xform of the mesh. To do this. Make a box. Useing the input rollout. For the box. And use the top view to place it in the center of the viewport. Then right click the box. Make it a editable mesh.

Click attach with the box selected. Then click your object. The box will reset the Xform of the mesh back to a square Xform. It will not distort your mesh any. Then just delete the box. And your model should show up correctly in NA.

Also the xporters turns the mesh. You will need to rotate it on the x axis -90 and on the Z Axis -90.. And your object will come out correct. Also if your object is way to big. Like super huge. scale the object down to .1 .1 .1 and it will be the correct size.

You can also use the Reset XForm under utilities, as well as use OgreMax which lets you specify the up direction under the exporter options (it also saves this setting so you don't need to keep setting it).



'm driven to extreme lengths of frustration... I wasted a few days of my life to rig my character to the skeleton using Skin Modifier and to animate it. Now, when I try to export it, guess what happens? Well...This happens: I get a error message saying: "--Unknown property: "Vertical" in Controller:Body"
This happens in the recommended 3DS Max to NA exporter that comes with NA. Using Max 9.

ell I reconmend downgradeing to max 8. 3DS max 9 is totally different then the others. They have totally rewritten the intire setup. And revamped the intire thing. Max 6 7 and 8 all work the same way. And do not give any problems with there exporters. Max 9 is not the same program. It has bad totally revamped and does not let any exporters for max 6 7 and 8 work at all. You will get errors on this.

Now then Let me give you some tips on max to make Exporting your meshes as easy as I can tell you. Without much of a problem.

This will be like a mini tut for you. When you create your model. Your going to need to do a few things befor you even thinking about animating it.

First and formost. You need to reset the Xform of the model. After you get all your textureing done for the model. This is one of the main things you apsolutly need to do first.

This is for any kind of model. Not only characters. This is going to cause you to have to probably reset the animation and everything.

But this is the number one thing that you need to do to get it to work correctly.

Now then to do this. You need to make a box. Go to the tab that has all the stuff like the boxes and everything.

Click box. Then in the keybord entery rollout. Put 1 1 1 in the height length and width catogories. Now then. Select the top viewport. And click the create button. Now then. wile the box is selected. Turn it into a editable mesh. Then go to the modify tab click attach. And attach it to your model.

After this. select all the polygons of your model. And detatch it as a new object. Make sure not to select the box.

This will reset your Xform. Then just delete the box.

Now then I will explane a little about animation. You will need to use the skin modifyer on the mesh. Then just select all the bones or dummy bones from the boneslot setup.

Next. just setup the animations like normal.

Now then. When you export the mesh useing ofusion. I take it you know alot about it. But I will give you some more info.

You need to name your animations that is walk..

walk

And your idle animation that is idle

idle

It seems that NA only reconises them animation names.

To make more you will have to code a new player type with all the animation names your going to be useing.

In the Ofusion setup. You will see the xport animations setup. It is a checkmark button at the top. You will need to click it. Then click on the new animation button.

name the first one idle for your idle animation
and your second walk

Or if you have a run animation you can use that too.

just name it run

Make sure your animation names are not capitalised. Also make sure your click loop and xport animation with a skeleliton file. Or they wont work.

Then just click export. and your mesh will be exported for use it NA..

Now then the 2nd step.

Your mesh will probably be sideways. and really big.

Your going to need to rotate the model -90 on the X axis. and -90 on the Z axis.

Rotate one at a time. Click the X Axis. And put in -90 then click ok then click rotate again. And click Z Axis and click -90 again.

Now then if your mesh is way to big. I can tell you how to fix that too.

You will need to scale it down to .1 .1 .1

Then just hit ok. You should have it now where you can use the model anyway you need.

I would stick with Ofusion and get yourself max 8. Because like I said. Max 9 wont work correctly with it.



Hi JCD37 look at this site : http://www.ogremax.com/Documents/OgreMaxSceneExporter/installation.html
under section Manually Installing the Exporter.
I think it will solve your error ! -And to all the others Falagard is right Wink Ogremax is a really great tool ,we only use Ogremax for exporting to NA


Q. Where's this at?


magrathean.jpg

http://magrathean.ca/download/magrathean_planetSDK-0.52.exe

124MB I get 2 fps running it.

jeka_cave.jpg
jeka_hummers.jpg
Couple of shots by Jeka


      


Changes for 055

0.55 (02.04.2008)

    * New font rendering system with Unicode support. New font format (.fontDefinition). Fonts can
      be generated using "AngelCode Bitmap Font Generator". Tool for converting from "AngelCode Bitmap Font Generator" to the NeoAxis font files (SDK\Tools\FontTools).
    * Language localizations support. Support for multiple languages using new format (.language).
    * Added Russian language localization as example of multiple languages
    * Resource Editor: .language file editor
    * OGRE *.fontdef have been depreciated and are no longer used
    * Configurator: Allows selection of language localization
    * PhysXPhysicsSystem: Support hardware acceleration (tested with PhysX 100 Series)
    * Configurator: Opportunity to enable or disable physics hardware support
    * New post effects: HeatVision, Tiling, Invert, Blur
    * OGRE 1.4.7
    * Resource Editor: Mesh Editor: Bounding boxes of meshes while viewing animations is now realized
    * Renderer.dll complete re-write from C++/CLI to C# and PInvoke
    * Merged RendererAddition.dll code base moved to Renderer.dll
    * Engine ready for Mono port and ready for port to other platforms (Mac, Linux). No more C++/CLR based assemblies.
    * TextBlock: Support of any symbols in the attribute name. Example: "Xx vv..." = value.
    * TextBlock: Unicode support. Example: AttributeName = "\x043a\x043b\x043c".
    * MeshObject: NormalizeNormals property is removed and is done automatically now
    * ODE 0.9
    * HeightmapTerrain: Ability to change heightmap layers from code and not only through the CollectionEditor
    * MapObject: OnAttachToMapObject() and OnDetachFromMapObject() methods
    * Skeleton: New BlendMode property for changing animation calculation method
    * Native memory manager. Finding leaks (to log file after end working of application). Information about memory using in the performance counter.
    * Merged code base Plugin_ParticleFX.dll to OgreMain.dll
    * Logic system: Added AssemblyInfo to map assemblies
    * StaticGeometry class is removed
    * Optimizations of MapObject class (MapObject.Position, MapObject.Rotation, MapObject.OnSetTransform)
    * Optimizations of scene manager
    * Optimizations of text rendering
    * Bug fix: Incorrect working of light sources which not cast shadows
    * Bug fix: GuiRenderer: Incorrect rendering of lines in the OpenGL (GuiRenderer.AddLine())
    * Bug fix: GuiRenderer: Incorrect rendering of triangles (GuiRenderer.AddTriangles())
    * Bug fix: GuiRenderer: Problems when working with many different fonts
    * Bug fix: Impossible to open/close console if language distinct from English is switched on
    * Bug fix: Resource Editor: Invalid lighting on some videocards
    * Bug fix: Resource Editor: Channel editor of mesh. Not saving UVWrap flag.
    * Bug fix: Resource Editor: Incorrect playing of mesh animations
    * Bug fix: Map Editor: Incorrect saving map by means "Save As"
    * Bug fix: Map Editor: incorrectly rendering of selected StaticMesh
    * Bug fix: ODEPhysicsSystem: Memory corruption and leaks
    * Bug fix: PhysXPhysicsSystem: Fatal error on some computers
    * Bug fix: PhysXPhysicsSystem: Incorrect return value of PhysicsWorld.MaxAngularVelocity
    * Bug fix: HeightmapTerrain: Fatal error, if version of pixel shaders is not more 2.0
    * Bug fix: HeightmapTerrain: Inexact lighting rendering on the old videocards. (half shader precision problem)



Q. 0.52 version came and I found myself in bit of a trouble.

I have made modifications to classes that come with NeoAxis like Dynamic.cs

Now if I upgrade my 0.51 to 0.52 I lose all my modifications.

I could inherit MyDynamic from Dynamic and make modifications to that class. This way upgrades won't affect code I have made.

Will I lose the possibility to override something present in Dynamic or is NeoAxis programmed so that everything can be replaced in MyDynamic?

Only 2 negative things I can imagine is that Resource Editor and Map Editor will have unnecessary classes in them (NeoAxis class and my new class)

MapObject
- LogicClass
- Text
MyMapObject
- CanBePickedUp
- SoundWhenHit

and the second problem is that all classes that come with NeoAxis won't have the capabilities of MyMapObject, because they are inherited from MapObject




The best way to unite your changes and changes of release.

For this purpose there are special programs and also svn, cvs.

Try it http://www.araxis.com/merge/index.html



I use TortoiseSVN http://tortoisesvn.tigris.org/ and Araxis Merge together.

Use WinMerge its the best tool for Windows to merge code IMO

am: Amen

That and most developments if you are going to make something serious just stick with a version and prevent further changes to the engine to prevent the mechanics of your game being changed or needing to tweak anything. Future projects use newer versions but if it's just 1 class then yeah merging is cool but a slight change in the physics engine from engines side of things could ruin an effect that was made when it was set the older way hence upgrading on large projects is normally a bad thing.

I am kinda just speaking outta experience and the chaos that ensued when a local game development company here in Vancouver was using the Unreal2.x engine and decided to just upgrade to 3.x half-way in production. It ruined them and they never got the the project to the publisher in time and lost the other half of the contract and of course damaged their relationship with the publisher and future work.

Point in case, measure twice cut once


Well do I inherit all my classes from NeoAxis-classes ir do I user merge?

First option should be safer and possible, if every method in NeoAxis-class is virtual and can be overrided.

After inheriting I could just copy new versions over the old ones



Here is what I am doing. It works for me, and I hope it will help.
- I derived all my entity classes from neoaxis classes.
- I almost never modify an original class, except when there's no other choice. When I do so, I write down my change, precisly, in a workbook (I a m using mediawiki for this purpose),
I ended up with only few modifications of base classes (only 2 or 3 files are slightly modifyied).
Specific classes of my project are stored in each "main dir" of neoaxis sources, in a specific dir, that I move to the new realease.

For ressources, I structured my project data in a specific directory of the main Neoaxis data directory. This specific dir follows upgrades (copy/paste)

When upgrading, I moved all data to the new install of the source, replicating the structure, but modifying nothing of the original source.
Then, I apply specific changes by hand (correction to adapte original class codes to my needs), and specific changes to data due to evolution of core functionality (for example,some modifications of the material system raise the need to modify your ressources files). To identify modifications to be done due to upgrades changing : follow the change log provided by Ivan.
I am upgrading version like this since the 0.44, and it works fine, even when I switch from the non commercial licence to the indie licence (1 hour of work to upgrade my whole project, average).

This is possible only in early stage of developpment. At some point, you need to modify too heavily the base source code to preserve the original one. So when you come to this point, you have to freeze the version.
To delay this time, use heavily polymorphism, inheritance and all C# can bring to reuse, and apply one main principle : NEVER MODIFY The original source code, and try to develop your project as a subproject of the main neoaxis code. It's a huge constraint, by this allows you to follow upgrades.

best regards,
Freeman.

Freeman_CIT: Followed your method and I like it. Feels good when you compile it Smile

Q.I'm creating a new type for a character (based on GameCharacter type).
I create the new type and attach the mesh. It's too big so I resize it using the type editor and move it.
At this point a problem arises. The physics capsule remains distant from the floor (the checkerboard) after I moved the mesh in the right position. Then, if I save the type and load another type, the physics capsule stays fixed in the center of the checkerboard, half below and half over it.
How can I move the Physics capsule?

Move the mesh so it's inside the physics capsule. Don't look at the checkerboard at all.


Q. How do I get Lightmaps out of 3ds Max (version 8)?

Submeshes are not really seperated objects in max. They are really just seperated by texture. As long as you have different textures on your mesh. You can use as many submeshes as you want on a single mesh.

What you need to do is select the faces you want to be lightmapped. Or just select the intire room. Useing max. make the lights you want. I am sure you know how to do this. So I wont explane.

Anyway after you get your lighting setup. Go up to rendering Then click render to texture. A new dialog box will pop up. Select your mesh. And You will see the name of the object pop up in the dialog box.

I am just useing a box for this. So like mine says. At the top. Box01. Under the name.. Beside it. It will say Object Channel and presumably 3. And beside it. Sub object channel will be blank. And edge padding will be 2.

Scroll down until you see Mapping Coordinates.. beside object. Make sure is says automatic unwrapping. Then under channel. Make it 2 instead of 3 in the box with the 3 in it.

Then under output. Click on add..you will see another dialog Add texture elements.

In in find lighting or shadows map.(Cant remember which one is correct. So just try either.)Click it then click Add elements.

Then down at the bottom where you see the buttons with 256 512 and so on. Depending on the size of the map. I would select 2048 for a good size shadow map.

Now then after that.. I think all you will have to do is click render.

After you click render. All you will have to do is wait for it to automatically unwrapp the object. Then it will render the shadows.

After it is done. (This may take a wile depending on how good your computer runs.) Right click on your intire object. And click convert to editable mesh. This will bring all your stacks down and make it a complete mesh.

After that. Save it as a new file. Then just export it like you would do any mesh. as a .mesh file.

After that. Go into neo resource editor and look for your mesh. You should then be able to see all your sub meshs. Just create your materials like normal. But in the 2nd diffuse slot. Put your lighting map into it. then use channel 2. I think neo axis calls it texcoord.. I think it should be texcoord1 maybe. Put your shadow map into the diffuse 2 of all your materials. Then add them like normal. It might take a bit of trial and error but it should work hopefully.
Update: check http://terrymorgan.net/softimage_modeling.html for 'build a dungon.zip' It covers Max lightmaps.


NeoAxis Engine 056 released!

This release is the winner by amount of changes!

- New scene graph. Octree and Quadtree support (Map.SceneGraphType property). Fast automatic reconstruction of the graph structure for optimal performance (Map.SceneGraphDynamicTree property). Also performance is increased.
- Joysticks, gamepads, steering wheels and XBox360 controller support. Interface for integration of other input devices.
- Mono Runtime support. Now the engine can be started without installed .NET Framework.
- Fast native memory manager. Allocation and freeing unmanaged memory is about 3 times faster now.
- Controllers class is refactored and renamed to GameControlsManager. It also has been moved to GameEntities.dll assembly. Now all code of player management is accessible in the Non-Commercial SDK.
- Static lighting for attached meshes of MapObject's is supported. Earlier only StaticMesh was supported.
- Opportunity to create BoneSlots for the attached meshes in real-time. (MapObjectAttachedMesh.CreateBoneSlot(), DestroyBoneSlot()).
- Source code of MonoRuntimeLauncher in the SDK. This application is intended for convenient run of a engine on Mono Runtime. It's generates Game_MonoRuntime.exe and Configurator_MonoRuntime.exe files.
- Sound System: Opportunity to load a sound from a stream or from memory.
- Improved code of ActionGameWindow.cs for working with GameControlManager and 3D gui.
- Map: Method for getting objects by box and clip planes (GetObjects()).
- SceneManager: Methods for getting render objects (GetSceneNodes(), GetStaticMeshObjects()).
- Map.DrawNodes is renamed to Map.DrawSceneGraphInfo.
- OggVorbis 1.2.0.
- MapObject: Added method for recalculation of MapBounds (RecalculateMapBounds()).
- MapObject: MapBounds will be updated after Attach(), Detach() now. It's working for attached meshes, MapObject's and GUI.
- Quat: GetDirection() method is renamed to GetForward().
- MapCurve: Getting rotation of curve. (CalculateCurveRotationByTime()).
- Weapon: FPSMeshName property is removed. Added FPSMeshMaterialName property. Be attentive.
- Teleporter: "Active" property by default is "True" now.
- Example class for creation of new types of input devices has been added (ExampleCustomInputDevice class).
- MapObject: Events for working with attached objects have been added (AttachEvent, DetachEvent, AttachToMapObject, DetachFromMapObject).
- MapObject: Methods and events for working with die objects have been added (OnIsAllowToCreateDieObject(), IsAllowToCreateDieObject, OnDieObjectCreate(), DieObjectCreate).
- MapObject: OnDieMapObjectCreate() method has been removed. Need to use OnDieObjectCreate() now.
- StaticMesh: Added SplitGeometryPieceSize property for setting size of batches at geometry splitting. Early for this purposes Map.NodeSize property was used. Compatibility is granted.
- ActionGameWindow: Earlier, when controlling units like tank, crane or turret, the previous unit was moved outside of the map. Now it becomes deactivated, invisible and moves with the vehicle (i.e. it will "sit" in it).
- Interface for working with keyboard and mouse has been changed. Changes apply to EngineApp, UISystem, GameEntities and Game assemblies. You will note many little changes in the demo code. It is made gradually in order to avoid the need of System.Windows.Forms.dll assembly in the game code.
- Map: NodeSize and NodeBoundsIndents properties have been removed. Node size is calculated automatically now.
- Map: FilterGroups for MapObject's can be combined now. One object can have many filter groups.
- Optimizations of PhysXPhysicsSystem.dll, ODEPhysicsSystem.dll, DirectXSoundSystem.dll.
- Optimizations of Parse() methods in the MathEx.dll.
- DebugGeometry: Culling flag for AddVertexIndexBuffer().
- Resource Editor: Attached "Helper" object now are drawn more informatively.
- Bug fix: Problem with animations of weapons in FPS mode when additional render targets were visible.
- Bug fix: Map loading error, when map files had "read only" flag.
- Bug fix: BoneSlots of attached meshes did not use BoneSlot.Position and BoneSlot.Rotation.
- Bug fix: Bug in the .csproj files. There was a message about "Game.exe not found" when launching the debugger.
- Bug fix: Fatal error after mouse double click in Maps Window.
- Bug fix: Incorrect animation blending for attached meshes.
- Bug fix: Incorrect working of Physics._AddCustomMeshGeometry() method for scaled MeshShape shapes.
- Bug fix: Map Editor: Incorrect working of layers after undo/redo.
- Bug fix: Incorrect working of the portal system if occluder.Active = false.
- Bug fix: Memory leaks in EVideoBox and DirectXSoundSystem.
- Bug fix: Incorrect mouse working if "EngineApp.UseSystemMouseDeviceForRelativeMode = false".
- Bug fix: Incorrect working of GetObjects(Sphere sphere).
- Bug fix: Incorrect "Passed portal" value in the performance counter.
- Bug fix: Crash on exit if OpenGL enabled.
- Bug fix: StaticMesh: Problems at splitting geometry.
- Bug fix: MapCurve: After point creation by means "Create point" button, new point was created on the different layer than MapCurve layer.
- Bug fix: MapCurve: Incorrect working of CalculateCurvePointByCoefficient() method, time beginning not from zero.
- Bug fix: MapCameraCurve: CalculateCameraPositionByTime(): Vectors "forward" and "up" are always perpendicular now.


Q. Since 57 was released i was trying with various methods to update my code which wasnt changing much from the original code but having various classes written by hand. I wasnt able to compile or to run with the new binaries. With the new binaries referenced i got a bunch of strange compiling failures like 'Engine' wasnt found.
I mean, ok.. i understand if an Engine has to be restructured from time to time, but this is not the first time a whole lot of code was about to be changed because a name got changed. Is it that hard to keep old names and make messages telling users that the use of them is depreciated (Like when Net2.0 was released and you used 1.1 Namespaces..)
I have already deleted my whole project once after giving up updating (that was in January i think.. when heighmapterrain was introduced it was..,) and i am feeling like throwing this project now in the dustbin again, looking for a different engine and forgetting about NA...
Still, what i must say makes this engine is unique is the community.. wont find such a community at any other engine all too soon, so.. can the community give me some more hints about upgrading? And please dont simply link to that other thread that was discussing Merge and stuff for i already can repeat the whole thread in the middle of the night after waking up if someone demands.. what i would like to see is finally a Step by Step guide for updating without loosing 90% of the new made code.
Well, Ivan, the thing i keep missing in NA is a strict line. I know that the engine is in its first steps and needs restructuring from time to time, but its highly pis**ing me off that the engine is totally incompatible to old code once it is upgraded.. please keep renaming orgies and restrucutring of vital classes to a minimum if possible.



To be honest, if you are serious about making your game, I would suggest you to write your own classes.

That means: do not modify existing code, but copy the code into your own library.

Say you want to make a game called NachtWind.

I would create a library project called NachtWindGame.dll.

There you copy all the classes you need for your game from the gameentities project.

say you need class Unit:

Add a file called NachtWindUnit.cs to your project, copy the unit.cs code into it and rename the class from "Unit" to "NachtWindUnit" or "NWUnit" (along with all the refactoring).

Also create your own Game.exe (say NachtWind, which compiles to NachtWind.exe) project, delete all unneeded demo code and customize it to meet your game.

It is indeed alot of work, but it will make future upgrading much much easier.

I was encountering the same issues when i first started using NA. My main problem was i kept forgetting where all my changes were so i would usually have to rewrite everything. My solution was exactly what Xander said.

Another great time saver is Inheritance.
Lets say i wanna change a method within GameEntities.dll to suit my custom zombie, i would just create a separate class in my own class library dll called CustomZombie and inherit from the original class and just override the targeted function.

My "upgrade" time from the last release(0.56) was about 15 minutes as compared to the hours it would take playing with code merging programs and rewriting code.



Q. Can i change the default song that plays without replacing it? i heard neoaxis supports mp3 so i'd rather find the function that loads the default song and tell it to load another song instead but i dont know where to find that.

A.  GameEngineApp.cs at the bottom change game.ogg to whatever file you want and put that file in the data\sounds\music folder. you'll find it in the bin folder. another thing im working on if anyone has any suggestions is to lock an object to the crosshair with a button so that when i move the cross hair the specific object will move with it.


You can do it using the logic editor too. Open the TankDemo Map. Open the logic editor. Look at the gamemap object. This way you can assign a different song for different map, in the world menu in the map editor. But first you need to open the tankdemo map.

Q. What's the difference between StaticMesh and MapObject?

A. I'm not an Ogre expert, nor a NAe expert ( far from that ), but my conclusions from what I readed is that staticmesh objects will be joined together and split in chunks during render, decreasing your batch number. But since it has no LOD, it will keep your triangles number, plus it is not accessible to real-time manipulation, since it's "merged" in a single mesh.

Map objects, on the other hand, is fully accessible at any time, so it will count as an individual batch (plus material, sub-meshes...). But it has LOD, so it might decrease your triangles number.

Someone with a better understand will have a better explanation. ation

So it depends on what is your problem, triangles or batch numbers....
Q

Q. How do I increase frame rate?

A. I 
guess main performance problem is due to lights, shadows and the overall shaders implemantation.
Too much lit objects will kill your frame rate, too much shadow will kill your frame rate, lights or shadows on decorative objects will kill your frame rate pretty bad, more than 2 blended textures on the heightmap will kill your frame rate (on some machines), too many textures with alpha (any blend) will kill you frame rate, non .dds textures will kill your frame rate, too much (but not that much) normal/specular will really decrease your frame rate, and so on...
At this point it's really hard to pinpoint exactly what is dragging performance down, unfortunattly.


Personally, I've had a need to start a NeoAxis project with as little of the Data as possible. This usually involves copying the NeoAxis folder and then hunting around deleting files before adding them to my source control.

I then read several times on the forums here, that others were having difficulties with this themselves and thought I'd write some software to help.

So how exactly does it work?

Its driven by an XML file describing what should be copied, excluded, etc. There's no need to edit this file, but its there so that anyone can improve it and post back here.

General Page
Image

On the 'General' page you can specify the name of your project (your .sln file will be named this), the location for your project (all source/data will be copied here) and the NeoAxis installed version to use.

You will need to have installed a copy of NeoAxis somewhere. I'd recommend a clean install so that everything is still intact and you have a clean base when using NA Fresh Start.

Components Page
Image

On the 'Components' page you can choose which optional 'components' you'd like to copy as well.

There are 'Required' and 'Optional' components. 'Optional' components are items that aren't necessarily needed for you to use NeoAxis, but can be added if you think you'll need them.

Excluding some of these may cause problems if you run the copied game.exe like it is. I.e. if you choose that you don't want the 'Game Data MainMenu' then you'll have to either add your own version, or change the source code, before your project will run without errors.

Output Page
Image

The 'Output' page is simply a log of what NA Fresh Start is doing, after you click the 'Fresh Start' button.

That's pretty much it. Advanced users may want to check out the NAFreshStart.xml file included after installing. I'd even encourage you to edit it and post the changes back here so that everyone can benefit, and I can include it in a new installer.

You can download NA Fresh Start v1.0 build 1 here -> http://www.r2.com.au/downloads/files/na/nafreshstart_v1.0b1.exe


A shot from Enemicalix
enemicalix.jpg



Q. Tell me about shaders, etc.

A. Not sure if I can really make it easier to understand without getting into cgfx shader coding... Even then I only know enough to make it work... not so much the finer points of how it works...

Simple version...
In your 3D package you create these 3 things...
Positions (vertex, Vector3)
Normals (direction of the face, Vector3)
TexCoord (Uv data, Vector2)
Using the various Ogre exporters you generate tangents...
Tangent (vector3)

In the vertex shader you generate BiNormal
BiNormal (Crossproduct(Tangent, Normal), Vector3)

The Normal, BiNormal, and Tangent each are represented by one of the color channels in a Tangent space normal map... (don't remember right off hand)


Don't quote me on this but...
There are two ways to make this work...
The one NA uses in the default shader
(which is faster and more widely used than my method (I'd use it if I didn't need a normal map modified worldspace normal value for some aspect of my shader in the pixel shader))

Vertex shader
A tangent space matrix is generated for the model, then the lights are brought into the objects tangent space...
Pixel shader
(depending on the light model using (lambert?) NdotL for this example)
The Normal map is loaded and expanded (2*n-1)
then you find the resulting dotproduct of the tangent space normal map vector and the tangent space modified light vector...
the resulting float is multiplied by the object color creating the effect where faces that are looking at the incoming light are bright whereas faces that angle away are shaded....

(the method I use brings the normal map into object or world space rather than bringing the light into the current tangent space, requiring a few more pixel shader instructions)


And yes that was the simplified overview version...


hmap_matt_lmap3.jpg


hmap_matt_lmap2.jpg
hmap_matt_lmap.jpg

A heightmap terrain made by Matthew_TS

Map Editor hotkeys
-


In MapEditor press T for move, Y for Rotation and U for Scaling (R for Selecting only)


Q. How do I get my content out of  www.leadwerks.com 3d World Studio into Neoaxis?


While looking for something else on the forum I saw a request for this but no one had replyed so I thought I'd post this.
This is just one way of doing it.

Start 3DworldStudio and make your project.

Export as a .X file.
You now have an X file and all the textures in one place.

Since 3DworldStudio doesn’t export in any format that milkshape can import I have to use unwrap3D to change the X file into a ms3d file for milkshape

Start unwrap3D

Open the X file.

Note what materials and what part of the mesh they where assigned to. Under groups it lists what was used.
Save it as ms3d. You need the ms3d plugin for this.

Close unwrap3d.

Start Milkshape

Open the ms3d file you just made.

You will have to tip the model, because the x,y,z axel are not the same in NeoAxis.

Select all. Rotate 90 degrees along the x axel. Rotate 90 degrees along the z axel

Export as orge.mesh/bones. You don’t need to check in any of the options that are not already filled in, just export it.
It will want to export bones also.

Now get you textures for where you saved you X file and put both the textures and .mesh file into a folder in Neo Axis. That’s if you didn’t save it there to begin with.

Start the resouce editor.
Go to you map with the mesh and texture files in them.

Now you need to make a Material files for each of you textures.

Model.mesh this file now contain WHERE and what RESOLUTION the texture will be.
Texture.png this file is the actual texture that will be shown.
Material.hightmaterial this file is HOW the texture will be shown.

New resource, choose shader based material.
Edit the material. Diffused map1 choose you texture.
Do this for each texture.

Edit the mesh assigning the different materials to each submesh. Use the list you made from unwrap3d.




images_neofaq/increator.jpg
A shot from Increator

images_neofaq/bahopmet.jpg


Lord Bahopmet


057
 

History of versions

Subscribe to news mailing list

 


0.57 (31.07.2008)

Loading and saving during simulation

Framework for windowed applications

StaticMesh entities

Material schemes

Dynamic created map support

PhysX support

Animations

Other

Bug fixes

 

Q. I noticed that when making character models for neoaxis, they are looking at wrong direction. I don't know if it's exporter or NA issue...

From 3ds max, characters seem to be "turned" 90 degrees clockwise on Z axis.
To make it more clear (in 2D example), if you view from TOP, in 3ds Max character looks DOWN and in NA, it will look LEFT.

Using NA 0.561.
Using default 3ds max to ogre exporter: Lexiexporter won't even start for me. And I don't like it much anyway.

Normally, this wouldn't be a problem, because you can rotate characters both in NA or Max to make them face right. But if you're using a biped, you can't do this: All biped actions in 3ds max (footstep creation, figure mode bip edit), will force character to look only one way. And "apply also to skeleton" in NA when rotating mesh won't work on biped footstep animation (character started to strafe!!!).

Can this be fixed somehow?

A. That's not bug really. 3DS Max and NeoAxis have different placement of the axis, hence the rotation. Just rotate the model 90 degrees. And there should be an exporter (not sure for which model program) that has in its na FixedAxisForNeoAxis or something like that.

EDIT: Rotate the model in .type and there should be no problems. Worked for me...


Q.I can only click-drag- move objects by whole numbers, to move them
by decimals I have to type it in, I remember being able to
move in finer increments in earlier versions.



ResourceEditor and MapEditor it's this:
1. In the menu-bar at the top click on the "Tools" items and then click "Options..."
2. On the left side you see configs for all of the tools and view windows for various entities. On the very bottom there should be one called "Gizmo" with the red, green, blue arrows.
3. Now on the right side you should see a configuration screen with the title "Snap" and names like "Move snap", "Rotate snap", "Scale snap". Change those values to decimals to get more precision with your movements. (I personally like 0.1)


Q. Hi, I'm new to NeoAxis.
I've played with it for a little while but never actually made anything.
I'm using it to create my major project at uni this year and have hit a road bump.

I'm using NeoAxis Engine SDK 0.561 and I can't find out how to use the Bone Slots.

I only have a rough understanding of how to use them, but I want to add a physics box on my players hand, so when he moves in his animation it pushes stuff over.

I've imported my own mesh and added a member to the MeshBoneSlot Collection, but I'm not sure how to go on from there.

In the general properties, under the bone slot tab there is nothing there.

If you can help please respond.
I want to add physics to a bone slot, but if it's easier then I'll just add an object that you cant see.

A. I'm not a NeoAxis professional, but I'll try to explain what I understood about physics. If you want an object to have a phyiscs model, first of all you have to create a mesh with a skeleton. Then you will have to create a physics model, putting together some rigid bodies, joints and (if you need them) motors.
The necessary step to make it all work is to link the phyisic model to the mesh. To do that you have to create a type and attach the mesh you previously created to it. In the type property named "PhysicsModel" you have to select the name of the physics file you previously created.
Then, you can click on the "Edit Physics Model" button so that you can move and rotate the model in order to align the rigid bodies to the mesh parts that have to be linked to them.
Finally, you have to change the value of the LinkBonesToBodies property of the attached mesh to True. This variable tells the engine to move the bones accordingly to the bodies aligned with them.
You can understand more looking at the various object which have a physics model in the Resource Editor. If you can't find them, try doing a search for *.physics files. Moreover, there's a tutorial about this topic in the reference


Q.This is my firts post on this forum, but im observing it now for a year now. Neoaxis seems to be a great game creation environment (i actually believe that betauser is a true cyborg Wink ) and currently im trying to figure out a workflow, that fits my needs.

So, i like sketchup, because its an very easy modeller, and i can produce really fast low poly props and Level Elements like hallways, tunnels, rooms, and so on.

My Workflow is currently as follows: I model in sketchup my room. I export it as an .obj via a ruby skript. Now i import that obj file in Max 6. I refine the polys and uv-map the mesh with 4 different textures (i use submeshes). Then i export the model with the exporter provided with NA for Max. I load the mesh in the Ressource Editor and the mesh is pure white!
So i create a new highmaterial with my textures i used in Max, and assign them to the submeshes, but the textures a totally screwd and distorted.

What my i doing wrong? Has anybody else experience with a similar workflow? Any suggestins?


p.s. sketchup export (to blender?) very buggy and not maintained anymore...


A. Save your sketchup file as a google earth 4 .kmz, other non-4 kind doesn't work, rename it
to .zip, unzip, there will be a .dae (collada) in a /models
subdirectory, from there I open it in Softimage Mod tool Crosswalk. Should work similarly in Max. Follow my sig link
to Softy tutorials.


1. Model in Sketchup
2. Export from Sketchup to .3ds (.obj tends to have some problems and I get weird polys in some places for me, but I'm using the pro version of Sketchup and the free version with the Ruby script might not have the same problems)
3. I may end up needing to flip the normals in 3ds Max depending upon whether I was smart enough to make sure the blue faces in Sketchup are on the outside or not
4. Apply a UVW map modifier and UV map the model using something simple like box mapping at 1 meter.
5. Reset XForm on the object.
6. Export using OgreMax (the best exporter in my opinion).

Make sure you go to Scene Settings in the OgreMax menu and choose the proper units for the Scale setting. For example, in Sketchup I do everything in meters, and 3ds Max is set to meters, so I set Scale to meters. Also set Up Axis to Z in the OgreMax settings. Then I export from OgreMax to a .scene file and everything looks fine in NeoAxis.

Note: 3ds export not officially supported in free Sketchup.

images_neofaq/gilgamesh.jpg

images_neofaq/gilgamesh.jpg

Pics of Gilgamesh, by Seppuku
   


images_neofaq/y_dr_now3.jpg images_neofaq/y_dr_now2.jpg
images_neofaq/y_dr_now1.jpg

By Dr_Y_Now

images_neofaq/samwise.jpg



By Samwise

Q.How did you get a
physics capsule on the ground, it was way up in the air.


A.To align any mesh to the physics capsule all you have to do is move the character mesh to the position of the capsule, change the hieght and radius of the capsules and save. Then NA will automatically bring the model and the physics capsule to the origin(Z Axis).


Q. Is there a tutorial or anything available on how to use max multi-sub mapped models?

A.Your materials in Max must have the same exact name of the materials in NA, that's all.
Watch out: NOT the textures names, the MATERIAL names.
Textures names in Max don't matter at all.



Q. How do I make a sub--object textured mesh in Blender?


A. Blender_sub_object_materials (using blender 2.46)

spacebar /add/mesh/cube

edit mode AKEY select ALL UKEY CUBE projection.  You may need to
load a texture, for some reason I had one already.

get a uv image box open and load image. Whole cube gets textured
Next, select 1 Face, make sure 'occlude hidden geometry is ON' This is
'hide backface'. load another image, the face gets textured.

Export to ogre .mesh, you'll have 2 submeshes in your cube, put a different
highmaterial on each.



Q.have losted my map in map editor when i clicked Q keyboard button.i can not see my map and only i see my sky box.
How i can restore view point my map and model? 

A. You can click on the icon in map hierarchy to toggle visibility of all objects in the map. Click on one, focus camera and thats it.


images_neofaq/christian_ger.jpg

images_neofaq/christian_ger2.jpg
By Christian_Ger

Q. The question is. Whether the developers to make maps in the editor could put lighting sources and then on that basis would engine proschityval Lightmaps and recorded together with a map?

You can only calculate Lightmaps if you have a HeightmapTerrain or StaticMesh. Place the HeightmapTerrain/StaticMesh and you will be able to generate lightmaps
if you set CastStaticShadows to "true" from static mesh properties. I think it's on by default.
So, you can make all your houses, rocks and trees as static mesh. Putting StaticMesh into your map opens a mesh browser so you can select any model you like and you don't have to make it separate .type in resource editor. It took me awhile to figure this out when I started with NA, I thought I have to make .type for every model I use.

I think what InCreator meant was that if you place a staticmesh model (not the one you can find in /type) you can flag it so IT casts shadows on you're terrain. It wont get affected by the lightmaps but it will be included to cast shadows.

if you place a staticmesh model (not the one you can find in /type) you can flag it so IT casts shadows on you're terrain
 
 And you could always make a lightmap for the building
in Max or Blender, just get the directional light
to match up.

images_neofaq/doqkhanh.jpg images_neofaq/doqkhanh1.jpg

By Doqkhanh


images_neofaq/dazrulez.jpg

By Dazrulez


back to download page