451

(6 replies, posted in General)

Okay I fixed it! WOW! I saw that the opacity value in the file was 0 for whatever reason. Just changed it to 1 and PRESTO!!!

452

(6 replies, posted in General)

Once again same issue. This time it is an animated mesh and only the white ticks show up in Maratis.
First few lines of mesh file:

<Maratis>

<Mesh>

<Textures num="3">
    <Texture id="0">
        <image filename="..\maps\brown_eye.png" mipmap="1" />
        <mapMode value="1" />
        <tile u="repeat" v="repeat" />
        <translate x="0.000000" y="0.000000" />
        <scale x="1.000000" y="1.000000" />
        <rotate angle="0.000000" />
    </Texture>
    <Texture id="1">
        <image filename="..\maps\face.png" mipmap="1" />
        <mapMode value="1" />
        <tile u="repeat" v="repeat" />
        <translate x="0.000000" y="0.000000" />
        <scale x="1.000000" y="1.000000" />
        <rotate angle="0.000000" />
    </Texture>
    <Texture id="2">
        <image filename="..\maps\long_texture.png" mipmap="1" />
        <mapMode value="1" />
        <tile u="repeat" v="repeat" />
        <translate x="0.000000" y="0.000000" />
        <scale x="1.000000" y="1.000000" />
        <rotate angle="0.000000" />
    </Texture>
</Textures>

<Materials num="3">
    <Material id="0" type="1">
        <blend type="0" />
        <opacity value="0.000000" />
        <shininess value="5.000000" />
        <customValue value="0.000000" />
        <diffuseColor r="1.000000" g="1.000000" b="1.000000" />
        <specularColor r="0.021000" g="0.021000" b="0.021000" />
        <emitColor r="0.000000" g="0.000000" b="0.000000" />
        <customColor r="0.000000" g="0.000000" b="0.000000" />
        <TexturesPass num="1">
            <texturePass id="0" texture="0" mode="modulate" mapChannel="0" />
        </TexturesPass>
    </Material>
    <Material id="1" type="1">
        <blend type="0" />
        <opacity value="0.000000" />
        <shininess value="25.000000" />
        <customValue value="0.000000" />
        <diffuseColor r="1.000000" g="1.000000" b="1.000000" />
        <specularColor r="0.015000" g="0.015000" b="0.015000" />
        <emitColor r="0.000000" g="0.000000" b="0.000000" />
        <customColor r="0.000000" g="0.000000" b="0.000000" />
        <TexturesPass num="1">
            <texturePass id="0" texture="1" mode="modulate" mapChannel="0" />
        </TexturesPass>
    </Material>
    <Material id="2" type="1">
        <blend type="0" />
        <opacity value="0.000000" />
        <shininess value="1.000000" />
        <customValue value="0.000000" />
        <diffuseColor r="0.400000" g="0.130000" b="0.000000" />
        <specularColor r="0.000000" g="0.000000" b="0.000000" />
        <emitColor r="0.000000" g="0.000000" b="0.000000" />
        <customColor r="0.000000" g="0.000000" b="0.000000" />
        <TexturesPass num="1">
            <texturePass id="0" texture="2" mode="modulate" mapChannel="0" />
        </TexturesPass>
    </Material>
</Materials>

453

(10 replies, posted in Scripting)

zester wrote:

If you understand how to do "Object-Oriented Programming" in Lua then your totally ready for C++

I think Lua can only fake it, but I have not implemented that yet (Script is not big enough yet). I actually do understand C++(just like any other coding language), but the syntax is just annoying. I need to finish this tutorial I began to watch a while ago.

454

(10 replies, posted in Scripting)

Okay, I made the code a little neater:

----CUSTOMIZABLE GAME SCRIPT----

----OBJECTS
box=getObject("cube")
man=getObject("man")
monkey = getObject("monkey")
cone = getObject("cone")
person = getObject("person")
steps = getObject("steps")
Player = getObject("Player")
Set = getObject("Set")
Feet = getObject("Feet")
apple = getObject("apple")
snd_collect = getObject("collect")
apple_clone = getClone(apple)
----END OBJECTS

----MOTION
--MOVE VARIABLES
--[[translate(object,direction,"local")
onKeyDown(key)
onKeyUp(key)
setAnimationSpeed(object, speed)
playSound(object)
pauseSound(object)
stopSound(object)
getSoundGain(object)
setSoundGain(object, gain)]]

move_object =         box
move_speed =        .1
move_forward =        vec3(x, -move_speed, z) --[1]
move_backward =    vec3(x, move_speed, z) --[2]
move_left =        vec3(move_speed, y, z) --[3]
move_right =        vec3(-move_speed, y, z) --[4]
move_down=        vec3(x, y,-move_speed) --[5]
move_up=            vec3(x, y, move_speed) --[6]
move_direction =        {move_forward,move_backward,move_left,move_right,move_down,move_up}
move_btn =         {move_btn_U,move_btn_D,move_btn_L,move_btn,R}
move_btn_U =        "W"
move_btn_D =        "S"
move_btn_L =        "LEFT"
move_btn_R =        "RIGHT" 
move_animation =    1
idle_animation =         0
move_animation_speed =  2
idle_animation_speed = .5
move_sound = steps

--JUMP VARIABLES
--[[translate(object,direction,"local") ]]

col = getNumCollisions(jump_object)
jump_object =         box
jump_height =         3
jump_speed =         1
jump_btn =         "SPACE"
jump_animation =        changeAnimation(object, animationId)
jump_direction =         {jump_up,jump_down,jump,left,jump_right}
jump_up =            vec3(x, y, jump_speed*jump_height) 
jump_down =        vec3(x, y, jump_speed*jump_height) 
jump_left =            vec3(-jump_speed*jump_height, y, z) 
jump_right =        vec3(jump_speed*jump_height, y, z) 
collisions =             getNumCollisions(box)

--SPIN VARIABLES
--[[rotate(object,direction,angle,"local")]]

spin_speed =        7
spin_object =         box
spin_direction =        {spin_left,spin_right}
spin_left =             vec3(x, y, spin_speed)
spin_right =        vec3(x, y, -spin_speed)
spin_btn =            {spin_btn_L,spin_btn_R}
spin_btn_L =        "A"
spin_btn_R    =        "D"
spin_animation =        changeAnimation(object, animationId)

--MOVE FUNCTION
function Move(move_object,move_direction,move_btn,move_animation,idle_animation)
    if isKeyPressed(move_btn) then
        changeAnimation(move_object,move_animation)
        translate(move_object,move_direction,"local")
        playSound(move_sound)
        setAnimationSpeed(move_object, move_animation_speed)
        
    end    
    
    if onKeyDown(move_btn) then
        playSound(move_sound)
    end
    
    if onKeyUp(move_btn) then
        changeAnimation(move_object,idle_animation)
        setAnimationSpeed(move_object, idle_animation_speed)
        stopSound(move_sound)
    end
    
end

--JUMP FUNCTION
function Jump(jump_object,jump_direction,jump_btn--[[,jump_animation]])
    if isKeyPressed(jump_btn) then
        --changeAnimation(jump_object,jump_animation)
        addCentralForce(jump_object, jump_direction, "local")
    end
end


--SPIN FUNCTION
function Spin(spin_object,spin_direction,spin_btn)
    if isKeyPressed(spin_btn) then
        --changeAnimation(spin_object,spin_animation)
        rotate(spin_object,spin_direction,spin_speed,"local")
    end    
end
----END MOTION

----ARTIFICIAL INTELLIGENCE 
--SEE VARIABLES
--[[isCollisionTest(object)
isCollisionBetween(object1, object2)
getNumCollisions(object)
setScale(object, {x, y, z})
changeAnimation(object, animationId)
setAnimationSpeed(object, speed)]]

seen_object =        monkey    
seeing_object =         cone
seen =             isCollisionBetween(seeing_object,seen_object)--true or false
see_FOV =            0            
see_distance =        0
see_animation =        0--animatinoID

--SMELL VARIABLES
smelled =             isCollisionTest(object)--true or false
smell_particle_system =
smell_animation =        0--animatinoID

--HEAR VARIABLES
--[[playSound(object)
--pauseSound(object)
--stopSound(object)
--getSoundGain(object)
--setSoundGain(object, gain)]]

heard =             false
hear_sound =        getSoundGain(object)
hear_proximity =        0
hear_pitch =        0
hear_animation =        0--animationID
hear_limit =         3 --limit at which sound can be heard

--TOUCH VARIABLES
touched =             isCollisionTest(object)
touch_object =         getObject("finish_line")
touch_animation =     0--animationID

--TASTE VARIABLES
tasted =             isCollisionTest(object)
taste_object =        getObject(« objectName »)
taste_proximity =        0
taste_animation =    0


--SEE FUNCTION
function See(seeing_object,seen_object)
    if isCollisionBetween(seeing_object,seen_object) then 
        quit()
    end
end

--HEAR FUNCTION
--the object in parenthesis is the object being heard (a sound object)
function Hear()
    if heard and hear_sound > hear_limit then
        changeAnimation(object,hear_animation)
    end
end

--TOUCH FUNCTION
function Touch()
    if touched then
        changeAnimation(object,touch_animation)
    end
end

--TASTE FUNCTION
function Taste()
    if tasted then
        changeAnimation(object,taste_animation)
        tasted=true
    end
end

--SMELL FUNCTION
function Smell()
    if smelled then
        changeAnimation(object,smell_animation)
        smelled=true
    end
end
----END ARTIFICIAL INTELLIGENCE

----DEFAULTS
changeAnimation(person,0)
stopSound(steps)
----END DEFAULTS

----ADDITIONAL FUNCTIONS
function GetText()
    --Apples
    --apples = {apple_clone,apple_clone,apple_clone,apple_clone}
    --apples_collected = 0
    --scale = vec3(2,2,2)

    GuiScene = getScene("Scene_name")
    Camera = getObject("Camera_name")
    enableCameraLayer(Camera, GuiScene)
    text = getObject(GuiScene,"Text_object")
    show_apples_collected = "Apples = " .. apples_collected
    setText(text,show_apples_collected)
    --Collect(apple)
    --Collect(apple_clone)
    
    --coll = getNumCollisions(Feet)
end


--[[COLLECTION FUNCTION
function Collect(object)
    if isCollisionBetween(Player,object) then
        deactivate(object)
        playSound(snd_collect)
        --Scale()
        apples_collected = apples_collected + 1
    end
end
]]
----END OF ADDITIONAL FUNCTIONS

----GAME
function onSceneUpdate()

    --Move Box
    Move(box,move_direction[1],move_btn_U)
    Move(box,move_direction[2],move_btn_D)
    Move(box,move_direction[3],move_btn_L)
    Move(box,move_direction[4],move_btn_R)
    
    --Jump Box
    Jump(box,jump_up,jump_btn)
    
    --Spin Box
    Spin(box,spin_left,spin_btn_L)
    Spin(box,spin_right,spin_btn_R)
----------------------------------------------------------------
    --Move Person
    Move(person,move_direction[1],move_btn_U,move_animation,idle_animation)
    Move(person,move_direction[2],move_btn_D,move_animation,idle_animation)
    Move(person,move_direction[3],move_btn_L,move_animation,idle_animation)
    Move(person,move_direction[4],move_btn_R,move_animation,idle_animation)
    
    --Jump Person
    Jump(person,jump_up,jump_btn)

    
    --Spin Person
    Spin(person,spin_left,spin_btn_L)
    Spin(person,spin_right,spin_btn_R)
    
    

end
----END GAME

 
com3D wrote:
Tutorial Doctor wrote:

Now, if only I can find a software that automatically makes a texture a SEAMLESS TEXTURE

You can simply achieve this with GIMP, see "How to make a tileable texture with the GIMP" at
http://en.wikibooks.org/wiki/Blender_3D … e_Textures

Thanks com3D! wow! Right under my nose the whole time! hehe

456

(1 replies, posted in External Tools)

Going to look through these when I get a chance thanks! (I was just working on texturing a level) hehe

457

(2 replies, posted in External Tools)

I typically use 3 programs to model:

Sketchup
Blender
Wings 3D

I found out the conversion factors for the units from Sketchup to Blender. It turns out that it is the same from Sketchup to Wings3D, which means that if something is one size in Wings3D it will be the same size in Blender.

1 foot in Sketchup is about .3 Blender units.

That means that 1 blender unit is about 3.3 Sketchup units(ft)

Also, 1 Blender unit is 1 Wings3D unit (scale is the same)

The exact measurements are below:

1[SUU(ft)] = .30480[BU]

1[BU] = 3.28083[SUU(ft)]

1[BU] = 1[WU]

Below is a 1ft Sketchup Cube imported into Blender next to a 3.28083ft cube imported into Blender.
Note: The default size of a Blender cube added from the ADD MESH menu is 2 blender units or 6.56166ft
PunBB bbcode test

I don't know how to figure out the conversion into Maratis

458

(16 replies, posted in Showcase)

zester wrote:

--I can't quite get clothes that are separate objects to Rig correctly, but I needed to put something on the model.

I can help with this if your still having trouble, parenting clothes and getting them to deform to your model properly during animation is just generally a pain.

I thought it was me! haha. Thanks.

I have noticed that when the cloth mesh is flat (no thickness) it has no problem, but when it has thickness it gets strange.

I have been looking at a lot of meshes from this one website:
http://tf3dm.com/

Bunch of ripped game characters. When I bring them into blender, it is strange how the mesh is divided up. However, trying to export a rigged version of these meshes as a maratis mesh gives a callback error every time.

459

(16 replies, posted in Showcase)

Done some Animation (Image 17) and some NORMAL MAPPING (Image 18)

Thanks Zester and Anael!! Hey Zester, perhaps this normal map thing will help your characters look EVEN BETTER (you could use it for that belt to make it shine correctly. )

Oops. Changed it from FIXED to STANDARD hehe.

Edit: Okay, here are my findings, but first a photo:
PunBB bbcode test

Okay. So this is what I did (followed that video tutorial for one):

First I took a plane and subdivided it. Then I used a displace modifier using a displacement map I found on google:
http://upload.wikimedia.org/wikipedia/c … ghtMap.png

I applied the modifier and I had a HIGH POLY mesh of some brick.

I then added a flat plane to the scene and uv unwrapped it. I gave it a material and 3 Maps (diffuse,specular,normal)

I generated the normal map from the high poly map and added it to the normal map slot of the plane. I also made sure to check NORMAL MAP under IMAGE SAMPLING and I also set it to NOT influence the color, but the normal.

Exported the maps and mesh.

Note: I was in fixed mode and it didn't show up correctly. Also, without the specular map, it really doesn't work (it still looks flat). I used the image of the displacement map to affect the SPECULAR INTENSITY, but I set it's value to -1 (inverts the white and black areas).

Now, if only I can find a software that automatically makes a texture a SEAMLESS TEXTURE.

The normal map keeps showing its color even though the color option is disabled (normal influence enabled)

In Blender
PunBB bbcode test

In Maratis
PunBB bbcode test

Some Settings
PunBB bbcode test

Other Settings
PunBB bbcode test

And more Settings
PunBB bbcode test

anael wrote:

Bump mapping and normal mapping are from the same family, bump maps are more user-friendly and normal maps are more precise and direct.

What happen is, in a render engine, a bump map is internally converted into a sort of normal map.
We use normal map directly in real time 3d because this "conversion" can be preprocessed and because normal maps allow baking the normals of a hi-res mesh into a low res mesh with precision.

So I could get this same effect seen here:
http://www.youtube.com/watch?v=U7PQGgz1RII

In maratis? (The way it interacts with the light when the light is moved)

464

(11 replies, posted in Gossip)

zester wrote:

I am surprised you don't have BVHacker in your software links http://davedub.co.uk/bvhacker/ you can use it to edit those BVH files. You can for example delete the frames/animations you don't need and replace them with ones from other bvh files that you do want.

I had downloaded it, didnt want to put it up (had trouble with it).

After using it for a bit I see it doesn't handle large bvh files as quickly as BVHPLAY:
https://sites.google.com/a/cgspeed.com/cgspeed/bvhplay

So to view bvh files I will use bvhplay, and to re-sample I will use bvh hacker. Thanks zester.

465

(15 replies, posted in Showcase)

zester wrote:

Is that some love for Blender I am sensing Tutorial Doctor?

Haha. Isn't it all about learning to love? Hehe

466

(15 replies, posted in Showcase)

Thanks Zester and Anael.

Hey Zester, those areas were all made with the Texture Atlas plugin for Blender. AO map and shadow map as well.

Yes Anael, I am glad you have shadows in your Engine (unity makes you pay)

Guess how long it took to make each area? Just a few minutes!

Modeled it in Google Sketchup
Exported using a Sketchup obj export plugin
Imported into Blender
Used texture atlas to UV unwrap it
Baked ambient occlusion (set to mix mode)
Baked shadows (shadows set to overlay mode. You could use add or screen also)
Exported the maps to my game's maps folder
Exported the mesh to the meshs folder
Imported it into Maratis

I used 1024x1024 size images for the maps (reason you might see aliasing in the texture)
I also used only 20 samples for the ambient occlusion.
I had to use an edge split modifier on the sketchup models in blender

From what I have been learning about normal maps, they are supposed to make relatively flat geometry appear to have complex geometry, and are usually generated from a higher poly mesh to a lower poly mesh. They also cause the lower poly mesh to interact with light as if it were the high poly mesh. I will attempt a test today.

Bump maps don't store light information, and displacement maps deform the actual mesh.

468

(6 replies, posted in General)

com3D wrote:

Did you check the mesh file?

I believe I did, and found no line pointing to the maps for the jacket and pants. Let me check again.

469

(15 replies, posted in Showcase)

I am going to start making some test areas (small rooms with ambient occlusion that you can test stuff in). They come with a MAPS folder and a MESHS folder. Just copy these folders into their respective folders (in your game folder) and import the entity.

Test Room A:
PunBB bbcode test
Download:
https://sites.google.com/site/aasfsfasa … tRoomA.zip

Test Room B:
PunBB bbcode test
Download:
https://sites.google.com/site/aasfsfasa … tRoomB.zip

Test RoomC:
PunBB bbcode test
Download:
https://sites.google.com/site/aasfsfasa … tRoomC.zip

Hallway(Made in less than 10 minutes):
PunBB bbcode test
Download:
https://sites.google.com/site/aasfsfasa … wnload.zip

2 Level Rooms:
PunBB bbcode test
Download:
https://sites.google.com/site/aasfsfasa … Levels.zip

Office:
PunBB bbcode test
Download:
https://sites.google.com/site/aasfsfasa … Office.zip

Base(1.2MB):
PunBB bbcode test
Download:
https://sites.google.com/site/aasfsfasa … s/base.zip

St Petersburg(1.3mb):
https://sites.google.com/site/maratisfiles/files/Screenshot%20%28911%29.png
Download:
https://sites.google.com/site/maratisfi … rsburg.zip

Test Map(86K):
https://sites.google.com/site/maratisfiles/files/Screenshot%20%28982%29.png
Download:
https://sites.google.com/site/maratisfi … =0&d=1

zester wrote:

Here is a screenshot of my character in blender so far, I am not sure why the normalmap is so strong in Maratis thou.

https://lh3.googleusercontent.com/-MPxbwLYiVm0/Uk4q5B5rrLI/AAAAAAAABLs/vyt4obXuAKI/w960-h540-no/Screenshot.png

Did you change the inlfluence amount?

471

(6 replies, posted in General)

I have a character with clothes in Blender. The character has a jacket and some jeans.

I selected everything in Object Mode, and then i exported it as a maratis mesh. All meshes have textures and UV mapping, but only the character shows up in Maratis, and not the jacket and jeans.

Even when trying to export the jacket/jeans separately, I get a yellow bounding box in Maratis.

I have had this problem before, but I was able to fix it by applying a material in Blender. But this is different I think (Blender is so hard to diagnose).

Another one in no time:
PunBB bbcode test

473

(42 replies, posted in Showcase)

Added a Jules level edit! It has a skydome, water, and collection system. It is only a test game. I am creating my own animated character to replace jules.

Hey Zester, this is what I managed with Texture Atlas:
PunBB bbcode test

Hey Zester, got the Character animated and into Maratis:

http://forum.maratis3d.com/viewtopic.php?id=775