

ARTIFEX TERRA 3D - Artist-friendly, free and easy WYSIWYG realtime outdoor scene Editor & Painter
New loader now with Ogre::Terrain support: Addons for Artifex on SourceForge
MOC - Minimal Ogre Collision & Mousepicking
Simple TerrainMaterialGenerator for the use of standard Ogre material with Ogre::Terrain
Support me on Patreon
Hello everyone, after a good break apart from some minor fixes I started working on Artifex again. Since Artifex has been tested and running stabile with only some minor bugs reported for round 3 years now I decided to make a clean repack with the latest update and do some maintenance on it to lift it out of beta testing and call it a 1.0
DotScene Converter:
All features are fully working in the free version without restrictions and will remain free. RC1 is a still a zip archive and RC2 will be coming soon with a real installer and will release the SQlite-to-Ogre dotscene converter again. The converter is based on Php-Gtk and fully scripted so you can easily modify it to whatever XML output you need for your project!
Website stuff:
I also took care of the timeout problems regarding the download, so people with slower connections should be able to obtain it now too. Furthermore MOC has been added to the page again and there is a online manual now on the homepage that explains every function of Artifex Terra 3d in detail and in case you don't want to use the one inside the app. The forum didn't make it back but instead I opened a facebook page for support and discussions: http://www.facebook.com/ArtifexTerra3D
Future plans:
Next thing to happen is a UI overhaul and I am going to replace the current one with QT. I have been working on a Gtk Version previously like anounced before, but the DirectX Bug and the deployment nightmare with Gtk is too much of a hassle, so I decided to root for QT instead. The new UI will also make it a lot easier for me to extend Artifex. Paging support will come too and apart from that I have a couple of rather nice features in the work that I want to surprise you with!
You can get the 1.0 here: http://www.3d-terrain-editor.com/
We will also add a torrent download soon.
Enjoy!
//Nauk
ARTIFEX TERRA 3D - Artist-friendly, free and easy WYSIWYG realtime outdoor scene Editor & Painter
New loader now with Ogre::Terrain support: Addons for Artifex on SourceForge
MOC - Minimal Ogre Collision & Mousepicking
Simple TerrainMaterialGenerator for the use of standard Ogre material with Ogre::Terrain
Support me on Patreon
Good idea.Jeanbono wrote:-possible export the heightmap in a grayscale bitmap (8/24 bit) ?
-export alpha map in bmp/jpg ?
ARTIFEX TERRA 3D - Artist-friendly, free and easy WYSIWYG realtime outdoor scene Editor & Painter
New loader now with Ogre::Terrain support: Addons for Artifex on SourceForge
MOC - Minimal Ogre Collision & Mousepicking
Simple TerrainMaterialGenerator for the use of standard Ogre material with Ogre::Terrain
Support me on Patreon
Code: Select all
#ifndef __SIMPLETMG_H__
#define __SIMPLETMG_H__
#include "Ogre.h"
#include "OgreTerrainMaterialGenerator.h"
// Simple Terrain Material Generator sample to show how to use Ogre .material files with the new Ogre::Terrain
class SimpleTerrainMaterialGenerator :
public Ogre::TerrainMaterialGenerator
{
public:
SimpleTerrainMaterialGenerator() :
Ogre::TerrainMaterialGenerator()
{
mProfiles.push_back(OGRE_NEW OgreMaterialProfile(this, "OgreMaterialProfile", "Profile to use Ogre .material files"));
setActiveProfile("OgreMaterialProfile");
}
class OgreMaterialProfile : public Ogre::TerrainMaterialGenerator::Profile
{
public:
OgreMaterialProfile(Ogre::TerrainMaterialGenerator* parent, const Ogre::String& name, const Ogre::String& desc) :
Ogre::TerrainMaterialGenerator::Profile(parent,name,desc)
{
}
virtual ~OgreMaterialProfile() {}
Ogre::MaterialPtr generate(const Ogre::Terrain* terrain)
{
Ogre::MaterialManager& materialManager = Ogre::MaterialManager::getSingleton();
// Set ETM material
return materialManager.getByName("ETTerrainMaterial");
}
Ogre::MaterialPtr generateForCompositeMap(const Ogre::Terrain* terrain)
{
return terrain->_getCompositeMapMaterial();
}
Ogre::uint8 getMaxLayers(const Ogre::Terrain* terrain) const
{
return 0;
}
void updateParams(const Ogre::MaterialPtr& mat, const Ogre::Terrain* terrain) {}
void updateParamsForCompositeMap(const Ogre::MaterialPtr& mat, const Ogre::Terrain* terrain) {}
void requestOptions(Ogre::Terrain* terrain) {}
};
};
#endif
Code: Select all
mTerrainGlobals = OGRE_NEW Ogre::TerrainGlobalOptions();
mTerrainGroup = OGRE_NEW Ogre::TerrainGroup(mSceneMgr, Ogre::Terrain::ALIGN_X_Z, 1025, 5000.0f);
mTerrainGroup->setFilenameConvention(Ogre::String("BasicTutorial3Terrain"), Ogre::String("dat"));
mTerrainGroup->setOrigin(Ogre::Vector3::ZERO);
TerrainMaterialGeneratorPtr mMTerrMatGen;
mMTerrMatGen.bind( OGRE_NEW SimpleTerrainMaterialGenerator() );
mTerrainGlobals->setDefaultMaterialGenerator( mMTerrMatGen );
ARTIFEX TERRA 3D - Artist-friendly, free and easy WYSIWYG realtime outdoor scene Editor & Painter
New loader now with Ogre::Terrain support: Addons for Artifex on SourceForge
MOC - Minimal Ogre Collision & Mousepicking
Simple TerrainMaterialGenerator for the use of standard Ogre material with Ogre::Terrain
Support me on Patreon
Code: Select all
No Factory found for scene manager of type 'TerrainSceneManager' in SceneManagerEnumerator::createSceneManager at ..\..\..\..\OgreMain\src\OgreSceneManagerEnumerator.cpp (line 182)
ARTIFEX TERRA 3D - Artist-friendly, free and easy WYSIWYG realtime outdoor scene Editor & Painter
New loader now with Ogre::Terrain support: Addons for Artifex on SourceForge
MOC - Minimal Ogre Collision & Mousepicking
Simple TerrainMaterialGenerator for the use of standard Ogre material with Ogre::Terrain
Support me on Patreon
Great!Nauk wrote:I am currently working on a Artifex Sceneloader for the new Ogre::Terrain component.
duststorm wrote:Great!Nauk wrote:I am currently working on a Artifex Sceneloader for the new Ogre::Terrain component.
ARTIFEX TERRA 3D - Artist-friendly, free and easy WYSIWYG realtime outdoor scene Editor & Painter
New loader now with Ogre::Terrain support: Addons for Artifex on SourceForge
MOC - Minimal Ogre Collision & Mousepicking
Simple TerrainMaterialGenerator for the use of standard Ogre material with Ogre::Terrain
Support me on Patreon
I was thinking about that too, coming to the same conclusion. And yes big question is if you can blend them in homogenously at all, they need to have some sort of light-calculation that matches the rest without flashing out. I have the formula commented out waiting in the shader, but I didnt have the time to experiment with it yet. Performance wise if it is doable at all, it would coming down to a test I guess. Either way stitching (optional?) would spare a lot of material hacking and work-around in that regard. Looking for a solution on the boards, there is quite a number of threads where people report having problems with it and I have yet to find one being flagged solved. The performance hit for stitching is imho neglectable on current hardware. Also optional mesh normals and tangents would make the whole thing much more flexible and consistent in use with Ogre's standard material system. That way you could save one precious texture slot from the global normalmap if you need it. Interface wise a convenient Terrain->setMaterial("MaterialName") is really missing too to be consistent with the rest of Ogre's API philosophy.duststorm wrote:I also noticed that those skirts make it hard to do realtime self-shadows on terrain, they cast weird false shadows.
I haven't found a good solution for it either. The only thing I can currently think of is adding a different material to the skirts, but that would result in a higher batch count. Unless maybe all skirts could be rendered as one batch...
Maybe a shader hack that will not render shadow casters for faces with horizontal normals? But that would also exclude steep rock walls from terrain possibilities and it would probably also be pretty costly.
ARTIFEX TERRA 3D - Artist-friendly, free and easy WYSIWYG realtime outdoor scene Editor & Painter
New loader now with Ogre::Terrain support: Addons for Artifex on SourceForge
MOC - Minimal Ogre Collision & Mousepicking
Simple TerrainMaterialGenerator for the use of standard Ogre material with Ogre::Terrain
Support me on Patreon
Code: Select all
// If possible create a buffered keyboard
// fix the spelling bug difference between the SDK versions:
#ifdef __MINGW32__
if( mInputSystem->numKeyBoards() > 0 ) {
#else
#if (OIS_VERSION_MAJOR <= 1 && OIS_VERSION_MINOR <= 2)
if( mInputSystem->getNumberOfDevices(OIS::OISKeyboard) > 0) {
#else
if( mInputSystem->numKeyboards() > 0 ) {
#endif
#endif
mKeyboard = static_cast<OIS::Keyboard*>( mInputSystem->createInputObject( OIS::OISKeyboard, true ) );
mKeyboard->setEventCallback( this );
}
// If possible create a buffered mouse
#if (OIS_VERSION_MAJOR <= 1 && OIS_VERSION_MINOR <= 2)
if( mInputSystem->getNumberOfDevices(OIS::OISMouse) > 0) {
#else
if( mInputSystem->numMice() > 0 ) {
#endif
mMouse = static_cast<OIS::Mouse*>( mInputSystem->createInputObject( OIS::OISMouse, true ) );
mMouse->setEventCallback( this );
// Get window size
ARTIFEX TERRA 3D - Artist-friendly, free and easy WYSIWYG realtime outdoor scene Editor & Painter
New loader now with Ogre::Terrain support: Addons for Artifex on SourceForge
MOC - Minimal Ogre Collision & Mousepicking
Simple TerrainMaterialGenerator for the use of standard Ogre material with Ogre::Terrain
Support me on Patreon
FlorianGeorge wrote:...I compiled the loader with Ogre 1.7.2, the Grass is also not displaying maybe because of this,...
Code: Select all
void ArtifexLoader::loadGrassSettings()
Code: Select all
mGrassCoverChannel="G";
mGrassColourMap="ETbase.png";
mGrassMaterial="pg_grass";
mGrassAnimate=true;
mGrassDensity=1.5f;
mGrassRange=150.0f;
ARTIFEX TERRA 3D - Artist-friendly, free and easy WYSIWYG realtime outdoor scene Editor & Painter
New loader now with Ogre::Terrain support: Addons for Artifex on SourceForge
MOC - Minimal Ogre Collision & Mousepicking
Simple TerrainMaterialGenerator for the use of standard Ogre material with Ogre::Terrain
Support me on Patreon
Easiest way to do that is delete or rename the ETterrain.png the loader will automatically pick the binary file then if you use ETM as terrain component. Working with the standard TerrainSceneManager in Ogre1.7 you need the PNG heightmap.Nauk wrote:... so if you load the terrain from the "artifex_terrain.bin" file instead...
ARTIFEX TERRA 3D - Artist-friendly, free and easy WYSIWYG realtime outdoor scene Editor & Painter
New loader now with Ogre::Terrain support: Addons for Artifex on SourceForge
MOC - Minimal Ogre Collision & Mousepicking
Simple TerrainMaterialGenerator for the use of standard Ogre material with Ogre::Terrain
Support me on Patreon
I just checked the differences between OIS 1.0, 1.2 and 1.3. Apparently it was the other way round, your code was made for an OIS older than 1.2, so the "<=" in my change proposal needs to be " >=" instead in InputManager.cpp:Nauk wrote:[...] the loader code is 3 years old, back then Ogre 1.4x [...]
Code: Select all
// If possible create a buffered keyboard
// fix the spelling bug difference between the SDK versions:
#ifdef __MINGW32__
if( mInputSystem->numKeyBoards() > 0 ) {
#else
#if (OIS_VERSION_MAJOR >= 1 && OIS_VERSION_MINOR >= 2)
if( mInputSystem->getNumberOfDevices(OIS::OISKeyboard) > 0) { // For OIS 1.2.0 and above
#else
if( mInputSystem->numKeyboards() > 0 ) { // For OIS 1.0 and below
#endif
#endif
mKeyboard = static_cast<OIS::Keyboard*>( mInputSystem->createInputObject( OIS::OISKeyboard, true ) );
mKeyboard->setEventCallback( this );
}
// If possible create a buffered mouse
#if (OIS_VERSION_MAJOR >= 1 && OIS_VERSION_MINOR >= 2)
if( mInputSystem->getNumberOfDevices(OIS::OISMouse) > 0) { // For OIS 1.2.0 and above
#else
if( mInputSystem->numMice() > 0 ) { // For OIS 1.0 and below
#endif
mMouse = static_cast<OIS::Mouse*>( mInputSystem->createInputObject( OIS::OISMouse, true ) );
mMouse->setEventCallback( this );
// Get window size
Nauk wrote:To point 3, no there is no different technique, I simply forgot to update the correct PNG heightmap back then, so if you load the terrain from the "artifex_terrain.bin" file instead (Artifex is by default saving to a binary float array to avoid data erosion), the mountains will display correct. If you want to use the "ETterrain.png" heightmap instead, open the file dialogue (Ctrl+F) in Artifex and hit "Export the terrain as PNG".
Thanks, exporting the png heightmap worked. I'm using Ogre 1.7.2 in one project and the 1.8 repository branch in a different one, and the ETM (yet) in none of them, so I needed the png which should work in any situation.Nauk wrote:Easiest way to do that is delete or rename the ETterrain.png the loader will automatically pick the binary file then if you use ETM as terrain component. Working with the standard TerrainSceneManager in Ogre1.7 you need the PNG heightmap.Nauk wrote:... so if you load the terrain from the "artifex_terrain.bin" file instead...
Ah right, between Ogitor 0.4.4 and the current (Bitbucket Version)/(Snapshot), in the DotSceneLoader support for the GrassLoader was added, I will have a look at that code to see how to add it to the ArtifexLoader too. Using PG 1.1.4 atm.Nauk wrote:FlorianGeorge wrote:...I compiled the loader with Ogre 1.7.2, the Grass is also not displaying maybe because of this,...
Been a while since I looked at the old loader code. Now looking at it the answer to that is quite simple, I didn't include the PagedGeometry dependency in it to reduce the filesize. So if you want to see the grass you have to include PagedGeometry to be found here: http://www.ogre3d.org/addonforums/viewt ... 14&t=14411 into your project and feed it with whatloads from the zonesettings.cfg into following variables:Code: Select all
void ArtifexLoader::loadGrassSettings()
The values above resemble a working default configuration.Code: Select all
mGrassCoverChannel="G"; mGrassColourMap="ETbase.png"; mGrassMaterial="pg_grass"; mGrassAnimate=true; mGrassDensity=1.5f; mGrassRange=150.0f;
Hope that helps
Note: PG Version I used back then was 1.05, latest is 1.1.1 which I haven't tested yet.
ARTIFEX TERRA 3D - Artist-friendly, free and easy WYSIWYG realtime outdoor scene Editor & Painter
New loader now with Ogre::Terrain support: Addons for Artifex on SourceForge
MOC - Minimal Ogre Collision & Mousepicking
Simple TerrainMaterialGenerator for the use of standard Ogre material with Ogre::Terrain
Support me on Patreon
Sounds good. Maybe make a Bitbucket Mercurial repository? That would probably make it easier to submit patches and add extensions.Nauk wrote:I am working on several version, from simple minimal barebone beginner friendly up to all dependencies included and host them over at sourceforge.
For now I used Git on Sourceforge because I figured that is probably the most commonly used versioning system: http://sourceforge.net/projects/artifexterra3d/ maybe I change later, let's seeFlorianGeorge wrote:Sounds good. Maybe make a Bitbucket Mercurial repository? That would probably make it easier to submit patches and add extensions.Nauk wrote:I am working on several version, from simple minimal barebone beginner friendly up to all dependencies included and host them over at sourceforge.
ARTIFEX TERRA 3D - Artist-friendly, free and easy WYSIWYG realtime outdoor scene Editor & Painter
New loader now with Ogre::Terrain support: Addons for Artifex on SourceForge
MOC - Minimal Ogre Collision & Mousepicking
Simple TerrainMaterialGenerator for the use of standard Ogre material with Ogre::Terrain
Support me on Patreon
ARTIFEX TERRA 3D - Artist-friendly, free and easy WYSIWYG realtime outdoor scene Editor & Painter
New loader now with Ogre::Terrain support: Addons for Artifex on SourceForge
MOC - Minimal Ogre Collision & Mousepicking
Simple TerrainMaterialGenerator for the use of standard Ogre material with Ogre::Terrain
Support me on Patreon