Jardar
-
Posts
76 -
Joined
-
Last visited
Content Type
Blogs
Forums
Store
Gallery
Videos
Posts posted by Jardar
-
-
Hello
now i make mini game mrtg online mode 2.5D and
i need import model by 3D-Coat to leadwerks,
...
You will first have to make sure your model is ready to be exported, then export as FBX format. From there you can easily import models to leadwerks.
-
https://developer.mozilla.org/en-US/demosdetail/snappytree/launch
This is a great litle tree generator that runs directly in your browser with no addon / plugins required
Just thought id share
- 2
-
I can think of at least one example of a game where a unified mesh of the trees would save some akwardness, but perhas not remove it entirely.
Gothic3 had trees with intersecting branches, some trees had sway to simulate wind. The result in Gothic3 was that the trees and branches moved slightly out of sync, making it look really odd, that the branches seemed to slide around on the trunk.
That is just one example of a possible implication of intersecting branches over that of a unified mesh.
-
Honestly, I think it is a stellar idea. But it really doesnt need to be "latest news" and all that here on Leadwerks. Rather it should be a video or two, a gallery and a description with a link to the project's website if it got one.
That way, Josh can have a show of projects using the leadwerks engine, and the project's owners doesnt need to update so much on two seperate sites. Also the community around a project wouldnt be confused as to where they belong or where they should get information most specific for them.
It is also a good idea in that it can generate a small boost of traffic for all projects, as a user can be interested in one thing, and see a bunch of other things that might interest them as well.
-
Yeah I will look more into polyvox, as soon as my headaches subsides
-
Alright alright, let me come in with a reminder here.
I do not plan to have 128x128x128 chunks, but rather 128x128x2(or3), seeing as the character will only ever walk on one cubes width, left and right, and only ever interact with two cubes width, the walkable area and that right behind it.
I believe that cuts down quite a bit on the polycounts wether it is standalone enteties or large solid meshes generated with marching cubes.
All in all, I am not looking to create a minecraft clone as much as I want to create a terraria clone.
So, ive looked at this polyvox library, and the documentation is sorely lacking. I hope I can figure things out with some effort.
noiselib was lovely documented, dont know if I will need it now if polyvox does noise by itself.
-
That looks like an interesting library, thanks a lot Scott.
Will experiment with this for a while later, now im on some 3d modeling work, need a break from the headaches
-
This is getting more and more difficult, suren I have stuff to look into now.
Thanks.
-
Alright so I attempted to do the instancing of all the blocks, but I run into the same issue of a huge FPS drop when I try to have 128x128 blocks generated.
What I do is to make 1 base body box with 1 cube mesh parented to it. I then move the base body out behind the camera.
I then loop over a genrated heightmap and for every value over -0.08 i place a copy of the body box at the coordinates.
If I generate a heightmap of 128x128 and place blocks like stated above my FPS drops to 1-2, with 64x64 i get 60 FPS, and so forth.
Is this still doable?
Ill provide the code here: (its not pretty)
// ==================================================================== // This file was generated by LEBuilder // http://leadwerks.com/werkspace // ==================================================================== #include "engine.h" #include <iostream> #include <string> #include <noise/noise.h> #include <noise/noiseutils/noiseutils.h> using namespace noise; const int ScreenWidth = 800; const int ScreenHeight = 600; const char* MediaDir = "C:/LE/LESDK"; const char* AppTitle = "Shadows"; void ErrOut( const std::string& message ) { std::cerr << message << std::endl; } // ------------------------------- int main( int argn, char* argv[] ) { // Initialize if( !Initialize() ) return 1; SetAppTitle( AppTitle ) ; RegisterAbstractPath( MediaDir ); // Set graphics mode if( !Graphics(ScreenWidth,ScreenHeight) ) { ErrOut( "Failed to set graphics mode." ); return 1; } // Create framework object and set it to a global object so other scripts can access it TFramework fw = CreateFramework(); if( fw == NULL ) { ErrOut( "Failed to initialize engine." ); return 1; } // Set Lua framework object SetGlobalObject( "fw", fw ); // Set Lua framework variable BP lua = GetLuaState(); lua_pushobject( lua, fw ); lua_setglobal( lua, "fw" ); lua_pop( lua, 1 ); TMaterial material = LoadMaterial( "abstract::cobblestones.mat" ); /*WORLD GENERATION HERE*/ float worldSizeX = 64; float worldSizeY = 64; //Create some noise! module::Perlin noiseModule; utils::NoiseMap heightMap; utils::NoiseMapBuilderPlane heightMapBuilder; heightMapBuilder.SetSourceModule(noiseModule); heightMapBuilder.SetDestNoiseMap(heightMap); heightMapBuilder.SetDestSize(worldSizeX, worldSizeY); heightMapBuilder.SetBounds(0.0, 5.0, 0.0, 5.0); heightMapBuilder.Build(); utils::RendererImage noiseRenderer; utils::Image noiseImage; noiseRenderer.SetSourceNoiseMap(heightMap); noiseRenderer.SetDestImage(noiseImage); noiseRenderer.Render(); //Base Blocks TBody dirtBody = CreateBodyBox(); TMesh dirt = CreateCube(); EntityParent(dirt, dirtBody); PositionEntity(dirtBody, Vec3(0, 0, -50)); EntityType(dirtBody, 1); PaintEntity(dirt, material); //propogate world with blocks! double countX; double countY; for (countY = -(worldSizeY/2); countY <= (worldSizeY/2); countY++) { for (countX = -(worldSizeX/2); countX <= (worldSizeX/2); countX++) { double value = heightMap.GetValue(countX+32, countY+32); //std::cout <<"Value is:" << value <<"at coordinates" << countX << "-" << countY <<"\n"; if ( value >= -0.08 && countY <= 14 ) { //Create a Dirt Block for testing TMesh dirtBlock = CopyEntity(dirtBody); PositionEntity(dirtBlock, Vec3(countX, countY, 0)); //std::cout << "Made a block here! \n"; } } } // Get framework main camera TCamera camera = GetLayerCamera( GetFrameworkLayer(0) ); PositionEntity( camera, Vec3(0,123,-10) ); /*// Create ground TMesh ground = CreateCube(); TBody groundBody = CreateBodyBox(); ScaleEntity( groundBody, Vec3(100,1,10) ); ScaleEntity(ground, EntityScale(groundBody) ); EntityParent(ground, groundBody); PositionEntity( groundBody, Vec3(0,-2, 0) ); EntityType(groundBody, 1); PaintEntity( ground, material );*/ // Lets create our player controller and visible mesh int playerMass = 80; TController controls = CreateController(1.8, 0.4, 0.0, 45.01, 0.8); EntityType(controls, 2); SetBodyMass(controls, playerMass); PositionEntity( controls, Vec3(0, 120, 0) ); EntityParent(camera, controls); float move = 0.0; float jump = 0.0; float crouch = 0.0; // Add some light TLight light = CreatePointLight(); PositionEntity(light, Vec3(0, 121.5, 0)); EntityParent(light, controls); /*//Lets make some obstacles here TMesh obs1Mesh = CreateCube(); TBody obs1Body = CreateBodyBox(); ScaleEntity(obs1Mesh, Vec3(1,1,1)); ScaleEntity(obs1Body, EntityScale(obs1Mesh)); EntityParent(obs1Mesh, obs1Body); EntityType(obs1Body, 1); PositionEntity(obs1Body, Vec3(5, -1, 0)); TMesh obs2Mesh = CreateCube(); TBody obs2Body = CreateBodyBox(); ScaleEntity(obs2Mesh, Vec3(1,1,1)); ScaleEntity(obs2Body, EntityScale(obs1Mesh)); EntityParent(obs2Mesh, obs2Body); EntityType(obs2Body, 1); PositionEntity(obs2Body, Vec3(7, 0, 0));*/ //CollisionTypes Collisions(1,2, true); //DEBUGS DebugPhysics(false); // Spin cube until user hits Escape while( !KeyHit() && !AppTerminate() ) { move=KeyDown(KEY_D)-KeyDown(KEY_A); if(KeyDown(KEY_RSHIFT)||KeyDown(KEY_LSHIFT)){ move = move*3; } if(KeyDown(KEY_LCONTROL)){ crouch = 1; }else{ crouch = 0; } jump = jump = KeyDown(KEY_SPACE) * (!ControllerAirborne(controls)) * 5.5; UpdateController(controls, 0.0, 0, move*2, jump, 10, 1, crouch); UpdateFramework(); RenderFramework(); Flip( 0 ); } return Terminate(); }
-
Well I did not expect this many answers in under a day, lovely to see a discussion come out of it as well
Ok, so perhaps this is doable and im just doing things too stright forward and that is the problem. I have to look more into instancing
Any good pointers to material on instancing with leadwerks?
-
Im having an issue, I LOVE Leadwerks, and I LOVE this community as it is helpful and generally lighthearted. But after trying for a while to build a generated world of blocks I seem to have come to a crossroad. My attempts at generating a large number of blocks makes my game chug extremely. Infact generating 32x32 blocks makes the game slow enough.
So, question is, and im asking, because I actually want to stick around with Leadwerks, and hope that this is a solvable issue.
Can Leadwerks reasonably handle 4096x4096x2 blocks, complete with physics bodies?
Each block being 6 sided, 12 polygons?
If my calculations are correct, just the blocks would prove to be 402,653,184 polygons in total. Of course that isnt true as there would be air pockets around underground and above ground would be largely empty of blocks.
Does anyone have any thoughts around this?
here is a download link to a video of my prototype
-
I need to generate random worlds at reasonable speeds, and from what everything tells me, Perlin or Simplex noise algorithms are the best approaches.
However, both are quite a bit over my poor litle web developer head.
Anyways, the world I want to generate needs only X and Y coordinates. Do anyone have insights into implementing this in LUA?
-
That deffinately helped Rick, thanks
-
So I have a start.lua file that loads beautifully, everything seems to work, but once i started getting into moving something around inside of the game world, I notice the keyboard isnt working when running the app.
I have no idea why this would be, however, I hope someone could point it out for me.
Please keep in mind that this is the first I see of LUA and my first return to Leadwerks in a couple of years, so any other pointers would be greatly appreciated as well.
Code(start.lua):
--Function for creating our blocks local function createBlock(object) local block = CreateCube() block:SetScale( Vec3(1,1,1) ) block:SetPosition( object.coords ) block:Paint(object.material) return block end --Function to place our physics bodies on blocks local function createPhy(object) local body = CreateBodyBox(1,1,1) body:SetPosition( object.coords ) body:SetMass(0) body:SetCollisionType(COLLISION_SCENE) return body end --Function for creating our world local function createWorld(materials) --our world size local worldSize = Vec2( 1024,2 ) --our empty world object local worldObject = {} --Fill our world for y = 1, worldSize.y do worldObject.y = {} for x = 1, worldSize.x do local xcoord = -1*(worldSize.x/2)+x local ycoord = -1*worldSize.y+y local block = { coords = Vec3( xcoord, ycoord, 0 ), material = materials.dirt } --Insert our block block.entity = createBlock(block) block.phy = createPhy(block) worldObject.y.x = block end end return worldObject end --[[ Here our actual game starts ]]-- --Register the abstract path RegisterAbstractPath("") --Set the graphics mode Graphics(800, 600, 32) --Create a framework object fw = CreateFramework() --set the camera local camera = fw.main.camera camera:SetPosition( Vec3(0,3,-10) ) --Create Light local light = CreatePointLight(10) light:SetPosition( Vec3(2, 6, -3) ) --Load our materials --DIRTY HACK need better execution for easier debugging local materials = {} materials.dirt = LoadMaterial("abstract::dirt.mat") --Generate our world createWorld(materials) --Create a character body controller = CreateController(2, 0.45, 0.5, 45) controller:SetMass(1) controller:SetCollisionType(COLLISION_CHARACTER) controller:SetPosition( Vec3(0,4,0) ) --create a cylinder for our controller local playerMesh = CreateCube() playerMesh:SetScale( Vec3(1, 2, 1) ) playerMesh:SetPosition( controller ) playerMesh:Move( Vec3(0, 0.5, 0) ) playerMesh:SetParent(controller) --define movement move = 0 local jump = 0 --attach camera to controller camera:SetParent(controller) DebugLights(1) DebugPhysics(1) --define collisions Collisions(COLLISION_CHARACTER, COLLISION_SCENE, 1) --Main loop while AppTerminate() == 0 do --Movement move = KeyDown(KEY_D)-KeyDown(KEY_A) print(move) --jump = KeyHit(KEY_SPACE)*10 --Update Controllers controller:Update(0, move, move, jump, 40, 10) --Update world fw:Update() --Render world fw:Render() --Flip the buffers Flip(0) end
-
After a lengthy and very helpful chat with Macklebee, the issue is solved.
The problem was simply put that the .mtl file that was saved along with my .obj didnt have any material assigned with it.
when exporting from 3dcoat for instance, it is a good idea to export the color texture along with the model, then it writes the path to the texture.
-
true indeed that that the texture is a bit of an overkill, but it is also the texture for the rope.
I modeled the pole in modo and painted it in 3dcoat. I dont know how to assing the texture properly in either one of them appart for how I did it.
I used obj2gmf to convert from obj to gmf, and fbx2gmf for the fbx version. Same results, only fbx version became a thousand times larger when converted to gmf, heh.
-
First, let me say that I remember this question to be asked earlier, but after hours of looking, i gave up on finding the topic.
I have a model of a simple pole for a rope railing typically used with galleries, movie theaters and so on.
This pole works fine with textures in any modeling application i load it in, so the UVs are correct, it also works fine in THREE.js
However, when loading the model in the modelViewer, it appears completely grey and if I expand the material, it says <none>.
I have created a pole.mat file which is a near copy of the oildrum.mat file, with no luck.
I have now converted obj and fbx versions of this pole for hours without gaining any ground.
here is the material file in plain text:
texture0="abstract::pole.dds"
texture1="abstract::poledot3.dds"
shader="abstract::mesh_diffuse_bumpmap.vert","abstract::mesh_diffuse_bumpmap_specular.frag"
and the model and textures packaged as attachement.
I really hope someone can help me understand what im missing here..
-
I do believe that amplifier stack cost them a fortune though!
-
A very talanted designer at work made a christmas song and music video. It never cought on, but it is still good music and a funny video
If you think the singer in this video lipsyncs, you are deffinately right. They had fun changing up on the instruments. So nobody in the video does what they actually do when they play.
Merry Christmas!
-
-
I do visit about 3 times a day just to see what people are coming up with here.
There is a lot of incredible talent here and as stated before, people here do seem to be more relaxed then on other forums
-
I ran this at 1920x1080, everything turned on - wireframe at 29FPS, turning things off didnt increase framerate much.
Very beautiful, and excellent showcase. However if I turned around quickly everything was dark and then popped into light.
-
I used to have this problem as well, this was first at 2.30 then at 2.31 the problem went away. However, then the shadows started doing the same thing. Now I havent used leadwerks in a while so I do not how it is now.
-
I will help
My Game Project
in Showcase
Posted
This looks really really good.
Hope to see more in the future