Windows Warp3D - Beta Version Out Now!

Micah_DS

Member
I'm starting to wonder how many people actually want to make a 3d game with gamemaker? Cus I haven't had alot of replies recently
Oops, I've been lurking a bit, but I'm very interested, so guess I should finally say something, lol. :p

It looks very well-featured and I'd love to use it for a game in the future, but I'm currently making a 3D game in GMS2 which could not make use of this, mainly due to my unorthodox needs in animation and some rules with my graphical style.

I think that the more 3D assets that get out there, the more we'll see an interest in making 3D games with GameMaker. Especially with something like this, if it is as fully-featured as it seems to be. I do feel like some people might have missed this topic, or perhaps they saw the first post and only skimmed over the text and saw the one screenshot which may not look impressive at first glance. Perhaps you could edit the first post and use bullet lists for features, showing screenshots in spoilers which demonstrate the various shaders, editors, animation, etc.?

I look forward to your work on this. It's looking and sounding pretty fantastic.
 

Joe Ellis

Member
Thanks guys,
@Micah_DS I'm hoping over this next week or so to get most of it up and running, after that I'll be able to make alot more screenshots, and I'll update the first post with these, thanks for the suggestion with the bullet points, I'll do this.

@YanBG No it's just an extension that runs inside your project when you run it, I did plan for it to be stand-alone at first but I realized several advantages of it being run inside a project, as it allows you to use the project's resources (objects, scripts etc). and test them in levels in realtime. I've made a play\pause\stop button which can be used while editing a level, where all the objects get activated\deactivated (or frozen in mid air if paused) I like the idea of this cus you can test loads of things as your making them and don't have to recompile the project every time.
 

Joe Ellis

Member
I wanted to do something fun to break the monotony of coding a complicated program, so i had a go at volumetric lighting
The result I've come up with, I'm not sure if it's technically volumetric lighting, but it uses 3d volumes \ models and renders them with transparency that gets thicker as the object does
I'm happy with the results I've got today, but I'm also looking forward to trying other things out with this type of technique, like translucency\sub-surface scattering, and also wanna test this out with a human model to see if it'd make a good ghost.





 
Last edited:

lolslayer

Member
Nice, did you make a model with a lot of layers or diid you make a shader that makes the light volume thicker the more of the volume you see?
 

Joe Ellis

Member
With a shader, I used 2 depth maps, one with the model's faces the wrong way, so when you turn culling on, it gets rendered so you can see the inside of it, render the depth of this, then turn culling off, get the depth of the front faces and compare the two, the more difference, the more alpha
 
Last edited:

Kentae

Member
Okay, after reading this full thread I must say I'm quite intrigued :)
I have a couple of questions though.

1. (This is just to clearify as I can bearly believe what I've just seen)
Is it really possible to export an animated model from, say, Blender 3D as an FBX and get it into GMS 1.4 using this? :O
Cause that'd be a total gamechanger for me. :D

2. If so is it also possible to do som sort of blending/interpolation between animations using this?

Other than that, great work! ^^
(think it's kind of funny how it looks a bit like an old windows programme xD)
 

lolslayer

Member
With a shader, I used 2 depth maps, one with the model's faces the wrong way, so when you turn culling on, it gets rendered so you can see the inside of it, render the depth of this, then turn culling off, get the depth of the front faces and compare the two, the more difference, the more alpha
Hehehe I thought that you would be doing that if you were using shaders :p

While it being an absolutely amazing system, it doesn't work with hollow objects or two objects behind each other with a significant distance, but for light shafts as those it does look very good
 

Joe Ellis

Member
Okay, after reading this full thread I must say I'm quite intrigued :)
I have a couple of questions though.

1. (This is just to clearify as I can bearly believe what I've just seen)
Is it really possible to export an animated model from, say, Blender 3D as an FBX and get it into GMS 1.4 using this? :O
Cause that'd be a total gamechanger for me. :D

2. If so is it also possible to do som sort of blending/interpolation between animations using this?

Other than that, great work! ^^
(think it's kind of funny how it looks a bit like an old windows programme xD)
Yeah, that's all totally possible :D With interpolation, it just uses frame_pos (0 - 1) and blends between the two frames using this.
With skeletal animations it's also possible to blend between more than one animation, as the animations just control the bones, so all kinds of mixing several frames with ratios\weights is possible.

Yeah I'm a big fan of the old windows look, plus, as I'm not a ui designer, and am having to do it all myself, this is the best look I've come up with so far, in terms of functionality and being easy to follow.

Speaking of importing fbx models, and the ui, this is the current design I've got for the importer
the layout needs a few tweaks but its got all the features needed, and is pretty straightforward to use (I think)



Hehehe I thought that you would be doing that if you were using shaders :p

While it being an absolutely amazing system, it doesn't work with hollow objects or two objects behind each other with a significant distance, but for light shafts as those it does look very good
Thanks, yeah I was trying to get it to allow overlapping parts but I don't think it's possible with just 2 depthmaps, You'd probably need an extra 2 per overlapping object, but there's only so many times you could do that. But yeah, it's good for light shafts and glow effects :D I turned the threshold up and it makes a nice retro glowing crystal effect, looks like the one on crash 2.

 
Last edited:

Kentae

Member
Yeah, that's all totally possible :D With interpolation, it just uses frame_pos (0 - 1) and blends between the two frames using this.
With skeletal animations it's also possible to blend between more than one animation, as the animations just control the bones, so all kinds of mixing several frames with ratios\weights is possible.

Yeah I'm a big fan of the old windows look, plus, as I'm not a ui designer, and am having to do it all myself, this is the best look I've come made so far, in terms of functionality and being easy to follow.

Speaking of importing fbx models, and the ui, this is the current design I've got for the importer
the layout needs a few tweaks but its got all the features needed, and is pretty straightforward to use (I think)

Well now you've got me real excited :D I'm gonna have to try this out ^^
If I can get this working the way I want it it'll be huge for my projects :D

EDIT: Is there a download link btw? Can't seem to find one xD
 
Last edited:

Joe Ellis

Member
Well now you've got me real excited :D I'm gonna have to try this out ^^
If I can get this working the way I want it it'll be huge for my projects :D

EDIT: Is there a download link btw? Can't seem to find one xD
Good to hear, it feels really great how people are getting excited about this (including me) my aim from the start has been to let people be able to make a game in the normal gamemaker way.. but 3d, just the thought of it sounds super fun.
But no there's no download link yet, I was planning on testing the collision soon, with a rolling boulder bouncing around a spyro level, I'll put that up to test as a preview, but the actual program needs several things finishing before it can work as a whole, there's not much left to do, but you wouldn't be able to make a working game yet cus of the bits missing.
I will release it as soon as it's ready, but it won't be free, the price I'm thinking of is £50 \ $70. I wanna hear people's opinions about this. I think its very reasonable for the amount of things you get, and affordable by pretty much anyone, plus my aim from a business point of view is to make a small income from something I really enjoy doing.
 
Last edited:

Kentae

Member
Good to hear, it feels really great how people are getting excited about this (including me) my aim from the start has been to let people be able to make a game in the normal gamemaker way.. but 3d, just the thought of it sounds super fun.
But no there's no download link yet, I was planning on testing the collision soon, with a rolling boulder bouncing around a spyro level, I'll put that up to test as a preview, but the actual program needs several things finishing before it can work as a whole, there's not much left to do, but you wouldn't be able to make a working game yet cus of the bits missing.
I will release it as soon as it's ready, but it won't be free, the price I'm thinking of is £50 \ $70. I wanna hear people's opinions about this. I think its very reasonable for the amount of things you get, and affordable by pretty much anyone, plus my aim from a business point of view is to make a small income from something I really enjoy doing.
Well, if this can do all that I want it too I'd easly say that it would be worth that price. (not that I can afford it right now but hopefully I can by the time it's released ^^)
By the way, I've come up with a few more questions.

Will I have to create my full game, so to speak, in this programme? Or is it just for preparing assets that you then load into a normal GMS project?

Assuming it's the latter;
Can I add shader effects to an animated model in Blender and have those effects follow the model into my project in GMS using your programme?
Or will I have to sort of rebuild the effect in GMS? (Not that this is a problem for me at this point and it sort of brings me to my next question)

Can I import an animated model to my project and add my own custom shaders to it there?

Just trying to figure out what my workflow will be like if I decide to get this ^^

And I think that's it for now ^^
Can't wait to see some more updates on this, hopefully soon :D
 

Joe Ellis

Member
Well, if this can do all that I want it too I'd easly say that it would be worth that price. (not that I can afford it right now but hopefully I can by the time it's released ^^)
By the way, I've come up with a few more questions.

Will I have to create my full game, so to speak, in this programme? Or is it just for preparing assets that you then load into a normal GMS project?

Assuming it's the latter;
Can I add shader effects to an animated model in Blender and have those effects follow the model into my project in GMS using your programme?
Or will I have to sort of rebuild the effect in GMS? (Not that this is a problem for me at this point and it sort of brings me to my next question)

Can I import an animated model to my project and add my own custom shaders to it there?

Just trying to figure out what my workflow will be like if I decide to get this ^^

And I think that's it for now ^^
Can't wait to see some more updates on this, hopefully soon :D
Well there's 2 main editors, the map editor which is like a 3d replacement for the room editor, and the model editor, which is completely optional whether you wanna use it or just use blender etc.

You can import a model and add the shader effects after you've imported it, the editor has full control of all the uniforms and samplers in each shader (It basically reads the shader file and interprets it, finding each uniform)

You can import the materials from the fbx, however this only imports each material, the attributes and the values, and the outcome of how they look all depends on the shader and which uniforms the values are mapped to. So this option could be useful in some cases if you've set up a very complex and precise \ fine tuned material, but in most cases you may aswell just import the model and set the shader up inside the editor, as you can see exactly how it's gonna look in the game with the particular shader you've chosen.
--side note, you can also import a model split into meshes if you need several different materials.

The shader settings can also be altered per object, rather than per model, meaning each object using the model can have different settings for the uniforms & textures, and also work per vertex buffer, if the model has several.

The game's levels need to be made in the map editor, and consist of 8 main object types:

  • Entities - which use a standard gamemaker object with a 3d model, shader settings and a list of variables (which can be set in the map editor)
  • Points - Simple coordinates that are built into the map and can be accessed any time by name or index, useful for spawn points or places a character should walk to. They can also contain rotation and scaling values for instance making a character face a certain direction when it's spawned.
  • Areas - basically a cuboid (that can be irregular) that entities get logged into when they enter it, (not all entities, you get to choose which ones are checked) this can be used for activating events when an entity enters a certain place, like a trigger.
  • Tracks - these are basically 3d paths, I would've used the word path but gamemaker already has loads of functions for this so track was the next best thing lol
  • Cameras - these are optional, you can use an entity to do the same thing, but most of the time, you want a camera to just have one function and follow the player in some way, so with these you can set the step event, make them follow a track, and also which "render_state" they use.
  • Render States - this is basically a list of stuff that gets rendered in the draw event, render states allow you to choose exactly what you want to be rendered at what time, so they make stuff like ignoring invisible places really easy, and rendering only the current place the player is in, which I don't need to say is gonna be so much better for performance. They're also incredibly quick to switch between, as they're all pre-compiled during the map loading process.
  • Render Targets - this is a fancy word for rendering to a surface, they automatically set the surface up for you, allow you to assign a camera to render to it, and also allow you to set it as a texture in a model. Many juicy things are possible with these, deferred rendering, render to texture like cctv cameras, water refraction \ reflection, mirrors, shadows, the light shaft thing, ambient occlusion, sub surface scattering, you name it
  • Lights - these just contain lighting properties for the light, direction, radius, color, brightness, and get compiled into a uniform array, which can then be read in a particular shader, there are several different formats, revolving around the shaders that read the arrays, but I've(or will) write all these shaders and indicate which format each shader uses.

All of the objects' actual ai and stuff is meant to be coded in gml as you normally would do, and you simply assign the object to the "entity", just the same as you assign a model.
I'm gonna include alot of starter scripts and templates like a 3d platformer, first person, topdown, vehicles and lots of rendering examples.

Most of the 3d model handling and rendering side of things is automatically handled within the engine, so you don't actually need to code any of that, you just use the ui and menus to define everything.

There are a few functions which are intended to be used in "game code" that control things like switching animations, models, shader uniforms, aswell as collision scripts which all revolve around the system I've built for "collision meshes" which are attatched to each model.
These include:
  • Spherical collisions, where an entity is the sphere, colliding with the mesh, very precise and can return the angle \ normal of the collision, the surface normal and the up vector which can be used for making the entity bounce at a realistic angle or slide along it.
  • Lines intersecting triangles, useful for vehicles, and things that are rectangular \ rigid, there'll be a few combo methods with this, for say a rectangle or cuboid consisting of several lines.
  • Getting points on a triangle, for instance the place an object would land on the floor, or the triangle it's facing.
  • And several others that work primarily in 2d, but use the z axis \ coord, as there are several situations where this is all that's needed, and is alot quicker than the full 3d methods
All the collision meshes are split into cells, which makes the checking process fast as it only needs to check a few triangles at a time.

Shader uniforms can also be controlled in realtime by entities, by linking a uniform to an entity's variable, this makes animated uniforms possible, like switching colors, flashing lights and animated textures.

I think I've covered every possibility with the system I've built, allowing multiple materials per model or object, the only thing that is restricted is using more than one shader per object, for that you'd need to make 2 objects that render in the same place, but this is pretty easy to do and that rare that its ok to have to do that now and again. It just didn't make sense to have this as a standard feature as the whole system would've had to be built differently and would be less efficient when rendering objects without multiple shaders per model.

Wow, that was alot of information, just wanted to be thorough and here's some pics of the actual gui:















 

Kentae

Member
Well there's 2 main editors, the map editor which is like a 3d replacement for the room editor, and the model editor, which is completely optional whether you wanna use it or just use blender etc.

You can import a model and add the shader effects after you've imported it, the editor has full control of all the uniforms and samplers in each shader (It basically reads the shader file and interprets it, finding each uniform)

You can import the materials from the fbx, however this only imports each material, the attributes and the values, and the outcome of how they look all depends on the shader and which uniforms the values are mapped to. So this option could be useful in some cases if you've set up a very complex and precise \ fine tuned material, but in most cases you may aswell just import the model and set the shader up inside the editor, as you can see exactly how it's gonna look in the game with the particular shader you've chosen.
--side note, you can also import a model split into meshes if you need several different materials.

The shader settings can also be altered per object, rather than per model, meaning each object using the model can have different settings for the uniforms & textures, and also work per vertex buffer, if the model has several.

The game's levels need to be made in the map editor, and consist of 8 main object types:

  • Entities - which use a standard gamemaker object with a 3d model, shader settings and a list of variables (which can be set in the map editor)
  • Points - Simple coordinates that are built into the map and can be accessed any time by name or index, useful for spawn points or places a character should walk to. They can also contain rotation and scaling values for instance making a character face a certain direction when it's spawned.
  • Areas - basically a cuboid (that can be irregular) that entities get logged into when they enter it, (not all entities, you get to choose which ones are checked) this can be used for activating events when an entity enters a certain place, like a trigger.
  • Tracks - these are basically 3d paths, I would've used the word path but gamemaker already has loads of functions for this so track was the next best thing lol
  • Cameras - these are optional, you can use an entity to do the same thing, but most of the time, you want a camera to just have one function and follow the player in some way, so with these you can set the step event, make them follow a track, and also which "render_state" they use.
  • Render States - this is basically a list of stuff that gets rendered in the draw event, render states allow you to choose exactly what you want to be rendered at what time, so they make stuff like ignoring invisible places really easy, and rendering only the current place the player is in, which I don't need to say is gonna be so much better for performance. They're also incredibly quick to switch between, as they're all pre-compiled during the map loading process.
  • Render Targets - this is a fancy word for rendering to a surface, they automatically set the surface up for you, allow you to assign a camera to render to it, and also allow you to set it as a texture in a model. Many juicy things are possible with these, deferred rendering, render to texture like cctv cameras, water refraction \ reflection, mirrors, shadows, the light shaft thing, ambient occlusion, sub surface scattering, you name it
  • Lights - these just contain lighting properties for the light, direction, radius, color, brightness, and get compiled into a uniform array, which can then be read in a particular shader, there are several different formats, revolving around the shaders that read the arrays, but I've(or will) write all these shaders and indicate which format each shader uses.

All of the objects' actual ai and stuff is meant to be coded in gml as you normally would do, and you simply assign the object to the "entity", just the same as you assign a model.
I'm gonna include alot of starter scripts and templates like a 3d platformer, first person, topdown, vehicles and lots of rendering examples.

Most of the 3d model handling and rendering side of things is automatically handled within the engine, so you don't actually need to code any of that, you just use the ui and menus to define everything.

There are a few functions which are intended to be used in "game code" that control things like switching animations, models, shader uniforms, aswell as collision scripts which all revolve around the system I've built for "collision meshes" which are attatched to each model.
These include:
  • Spherical collisions, where an entity is the sphere, colliding with the mesh, very precise and can return the angle \ normal of the collision, the surface normal and the up vector which can be used for making the entity bounce at a realistic angle or slide along it.
  • Lines intersecting triangles, useful for vehicles, and things that are rectangular \ rigid, there'll be a few combo methods with this, for say a rectangle or cuboid consisting of several lines.
  • Getting points on a triangle, for instance the place an object would land on the floor, or the triangle it's facing.
  • And several others that work primarily in 2d, but use the z axis \ coord, as there are several situations where this is all that's needed, and is alot quicker than the full 3d methods
All the collision meshes are split into cells, which makes the checking process fast as it only needs to check a few triangles at a time.

Shader uniforms can also be controlled in realtime by entities, by linking a uniform to an entity's variable, this makes animated uniforms possible, like switching colors, flashing lights and animated textures.

I think I've covered every possibility with the system I've built, allowing multiple materials per model or object, the only thing that is restricted is using more than one shader per object, for that you'd need to make 2 objects that render in the same place, but this is pretty easy to do and that rare that its ok to have to do that now and again. It just didn't make sense to have this as a standard feature as the whole system would've had to be built differently and would be less efficient when rendering objects without multiple shaders per model.

Wow, that was alot of information, just wanted to be thorough and here's some pics of the actual gui:















Wow! I'm just blown away here, can't wait to test this ^^

The collision system you're talking about here, will that work well with, say, an open world game? Like one where the world is fairly large.

And one final question, and this is probably the most important... Have you set a release date yet? :p
 

Joe Ellis

Member
Wow! I'm just blown away here, can't wait to test this ^^

The collision system you're talking about here, will that work well with, say, an open world game? Like one where the world is fairly large.

And one final question, and this is probably the most important... Have you set a release date yet? :p
No but I'm hoping for a June release :)

Yes, the collision system would work well for this, cus all the collision meshes are per entity, which have a bounding box check first before the 3d collisions start, so you can easily split the map into several pieces of terrain, or use area triggers that set certain parts of the level to be checked at a time
 
Z

zendraw

Guest
wow your also working with 3d, and what a great jobe you have done!
as im also trying to work with 3d im very intrested in this project of yours. so far i havent seen a download link. what are your plans for this project?
the things you mention are very desireable for 3d users in this community, 3d animating being the most wanted.

best regards!
 

lolslayer

Member
Thanks, yeah I was trying to get it to allow overlapping parts but I don't think it's possible with just 2 depthmaps, You'd probably need an extra 2 per overlapping object, but there's only so many times you could do that. But yeah, it's good for light shafts and glow effects :D I turned the threshold up and it makes a nice retro glowing crystal effect, looks like the one on crash 2.
Well, if you really want to be try hard, you could first make one model of all the light shafts, then split it up into convex shapes, and then draw those shapes one by one on the two depthmaps and immediately calculate and store the results on another surface before another convex shape draws on the two depthmaps

But then again, you really need to be a try-hard to do that :p



Also, what animation formats does your system support?
 

Joe Ellis

Member
wow your also working with 3d, and what a great jobe you have done!
as im also trying to work with 3d im very intrested in this project of yours. so far i havent seen a download link. what are your plans for this project?
the things you mention are very desireable for 3d users in this community, 3d animating being the most wanted.

best regards!
Thanks, I'm planning on releasing it on the marketplace as soon as its fully backwards compatible, so that new updates wont affect users' project files.
The updates would mainly be extra tools, effects and optimizations.

Well, if you really want to be try hard, you could first make one model of all the light shafts, then split it up into convex shapes, and then draw those shapes one by one on the two depthmaps and immediately calculate and store the results on another surface before another convex shape draws on the two depthmaps

But then again, you really need to be a try-hard to do that :p

Also, what animation formats does your system support?
Oh thanks, I hadn't though of that. That would be useful

Animations can be skeletal, vertex keyframe (merging between vertex buffers) and vertex texture fetching.

Vertex and skeletal animations can be created and edited in the model editor, you basically edit the model or skeleton and "capture" that state as a frame.

Currently only skeletal animations can be imported from FBX, but these can be baked into vertex buffers in the model editor.
You would be able to import each frame of a model and merge them into an animation, provided that the vertex and triangle layout is exactly the same with just the vertex positions being altered.

I haven't developed many things with texture fetching yet but the function is there that allows you to set and read textures in the vertex shader, so theres all kind of effects possible with that if you blend between images or color channels, like moving terrain, water, wobbling jelly, even mapping each vertex to a pixel would be possible, to build different frames into images and pass them in, but this feature probably won't be out in the first version, I'm not sure, I know how it'd be done, I just don't want to prolong the initial release.
 
Z

zendraw

Guest
do you plan on releasing it free or paid? and if paid about what sum are you thinking of to charge the customer?
 

Joe Ellis

Member
I said earlier in the thread, but it's probably hard to find it amongst all the other stuff lol, I'll put it on the original post.

£50 \ $70. I wanna hear people's opinions about this. I think its very reasonable for the amount of things you get, and affordable by pretty much anyone, plus my aim from a business point of view is to make a small income from something I really enjoy doing.
 
Z

zendraw

Guest
well i dont think it wuld be affordable for every1, not for me atleast.
my personal oppinion is it wuld be a struggle if you want to profit from it, atleast in this community. plus you have a competition that gives his 3d tool for free.
 
O

orSQUADstra

Guest
$70 seems a bit much, at least for me.

Would it be a one-time purchase? Or a monthly/yearly subscription that you have to pay for every time?
 

Joe Ellis

Member
well i dont think it wuld be affordable for every1, not for me atleast.
my personal oppinion is it wuld be a struggle if you want to profit from it, atleast in this community. plus you have a competition that gives his 3d tool for free.
$70 seems a bit much, at least for me.

Would it be a one-time purchase? Or a monthly/yearly subscription that you have to pay for every time?
Thanks, I will take your opinions on board. It will only a one time payment, and you'll get new updates free forever, but I might release it for £30 \ $40, I don't really wanna go any lower than this for the amount of time I've put into it, and if you paid a contract programmer to do this, you'd be paying him like 1 cent an hour for that price
 

lolslayer

Member
Oh thanks, I hadn't though of that. That would be useful

Animations can be skeletal, vertex keyframe (merging between vertex buffers) and vertex texture fetching.

Vertex and skeletal animations can be created and edited in the model editor, you basically edit the model or skeleton and "capture" that state as a frame.

Currently only skeletal animations can be imported from FBX, but these can be baked into vertex buffers in the model editor.
You would be able to import each frame of a model and merge them into an animation, provided that the vertex and triangle layout is exactly the same with just the vertex positions being altered.

I haven't developed many things with texture fetching yet but the function is there that allows you to set and read textures in the vertex shader, so theres all kind of effects possible with that if you blend between images or color channels, like moving terrain, water, wobbling jelly, even mapping each vertex to a pixel would be possible, to build different frames into images and pass them in, but this feature probably won't be out in the first version, I'm not sure, I know how it'd be done, I just don't want to prolong the initial release.
NP :)

And thanks for the info, sounds very interesting
 

TheSnidr

Heavy metal viking dentist
GMC Elder
You've made an FBX importer? That's amazing! I've looked around on the webs, but haven't found a proper format specification yet. Only people attempting to decode it, and posting half an interpretation of it :p
Does it support the ASCII version or the binary version? Or both?
 

Joe Ellis

Member
It supports all the format versions from 6.1 to 7.5, both binary and ascii work from what I've tested.

I didn't make it myself, I paid a programmer I know to do it, @dphsw
He gave me the dll which includes around 100 functions to import & export all the different types of data contained in an FBX file

I just own distribution rights, so it's not my place to decide whether it could be released online for free, (if it were to be included in your program)

So I'd get in touch with him if your interested.
 

Joe Ellis

Member
The skeleton builder is up & running, and I'm really happy with how easy to use it is,





It works with standard xyz euler angles, and I've made rings that show you where the bone will move to when rotated.

You're able to rotate the angles using the arrow keys (by default)

left\right = z rotate (yaw\facing\heading)
up\down = y rotate (pitch\elevation\)
pageup\pagedown = x rotate (roll\twist\bank)

You can also press + & - to control the length of the selected bone \ distance from the parent

All of these functions will also be controllable with the mouse by clicking & dragging on each element.

I'm also planning on making a mirror function where you copy a strand of bones, like the shoulder and arm, then transformations apply to both sides, this'll be really useful with getting the bind pose to be equal.

Now it's time to get this thing animated!

I'll upload a demo of this soon..
 
Last edited:

YanBG

Member
Looks great! Reminds me of 3d modeling software.

What about adding default walking etc animations?
 

Joe Ellis

Member
No screenshots this week, it's been hard to make any cus the engine is currently down due to adding some improvements

Here's a list of new things that have been added:
  • The rendering system has been improved to support several shaders per model, one per vbuffer, and improved overall performance
  • The model format has been improved and made saving and loading faster and smaller file sizes
  • Added async loading and saving of models, maps and objects, which prevents any lag spikes when loading during gameplay
  • Added materials, which work as shader uniform & texture presets, which can be assigned to any mesh per model

There isn't a whole lot left to do now, things that still need to be completed are:
  • Skeletal animation & rigging editor
  • Fbx importing of skeletons and animations
  • Model editor tools need finalizing and primitive shapes: Prism, ramp, sphere
  • Lightmapping
  • The Manual
  • Example\Template projects & object presets
 

Joe Ellis

Member
How did you get it to be async?
By async I meant that the file gets loaded gradually and the game won't freeze while its loading, so its just done with an object that measures how much frame time is left and works until there is no time left, I know that async normally means completely not in sync with the rest of the program, but most of the async functions in gamemaker, like buffer load async, are actually synchronous and perform the task gradually, so the name ties in with these
 

lolslayer

Member
By async I meant that the file gets loaded gradually and the game won't freeze while its loading, so its just done with an object that measures how much frame time is left and works until there is no time left, I know that async normally means completely not in sync with the rest of the program, but most of the async functions in gamemaker, like buffer load async, are actually synchronous and perform the task gradually, so the name ties in with these
Very nice
 

Joe Ellis

Member
This is sort of a last moment thing.. but does anyone have any particular requests that they'd want to be included in the first version, cus release is imminent.. lol
 
C

cccooldean

Guest
I've lurked on these forums for a long time, but I just gotta say.
Oh my god, the 3D community around gm is way bigger than I thought it was,
and also, you are my favorite person now.
Thanks for being the first person to finally try this gargantuant task! I can't wait to see more!
sO EXCITED
 

The-any-Key

Member
I would like to take the step into 3D, again. (Been working on 2D when I started with GM but coded in 3D in Macromedia Director)
But I have not found any good 3D extension on the marketplace that can handle import or create object, collision, animation, camera following fast enough in GM, yet :)
 
Last edited:

Kentae

Member
This is sort of a last moment thing.. but does anyone have any particular requests that they'd want to be included in the first version, cus release is imminent.. lol
For as long as I am able to rig and animate in blender 3D, export as FBX and convert the file into something GMS is able to understand.

Attach object (like weaponary or armour) to bones via GML code.

And interpolate between animations, also via GML code.

I'm absolutely fine ^^ Can't come up with any more functions that I personally need at the moment ^^

Really looking forward to testing it out :)
 
½

½ a cup

Guest
Amazing work! You'd be crazy not to charge a premium price for this.

Does this work on all exports or is it custom DLL based?
 

Joe Ellis

Member
Amazing work! You'd be crazy not to charge a premium price for this.

Does this work on all exports or is it custom DLL based?
It uses 3 dlls:
  • Texture handling, anisotropic filtering and loading textures from files
  • Non-sandboxed file handling
  • The fbx importer
I'm gonna look into converting them to other platforms, but only the texture dll is actually needed for a final game, and it'd be easy to bypass this and just use textures from sprites or backgrounds instead, but it's alot more handy using this dll so I'm definitely gonna try and convert it. I'll hopefully get this sorted in an update but the initial release will be windows only.
I'm especially interested in getting Warp3D games to be exportable to the nintendo switch. I don't know if the nintendo switch exporter converts dlls or not, I hope it does, or is easy to convert them

Attach object (like weaponary or armour) to bones via GML code.
I made a function for doing this: bone_attatch(bone_index, instance_id)

If you call this within an character that has a skeleton, it'll attatch another instance "instance_id" to the bone,
it gets the bone's current absolute transform matrix for that frame ei. its position from the current frame of animation just before it gets multiplied with the bind matrix and sent to the shader, and multiply it with the calling instance's transform matrix, then set "instance_id"'s transform matrix to this.

Example use:

In character step event:
Code:
right_hand = bone_get_index("Right Hand")

bone_attach(right_hand, obj_sword)
There are other functions to do it in other ways but this is just a direct and handy combo function.
To do it from the sword's step event you'd need to get the character's right hand position with bone_get_absolute_matrix(instance_id(character), bone_index)

eg.
Code:
bone_index = skeleton_get_bone_index(character.skeleton, "Right Hand")

transform = bone_get_absolute_matrix(character_id, bone_index)
This way would be more problematic though cus if the sword's step event gets executed before the character's the sword would always be one frame behind, so you'd have to make sure its in the sword's end step and the character's animation is run in the normal step.

Alternatively you can do it in this one line:

sword.transform = matrix_multiply(character.transform, character.bone_absolute_matrix[right_hand])

But that's gonna be confusing for beginners to remember which is why I made the other functions
 
Last edited:

Joe Ellis

Member
Had some fun playing around with the model editor now its back up and running.
These pics aren't anything special, I need to get better at modelling,
but I do like how easy it is to make low poly stuff,
which was the original plan for the model editor, and its almost working exactly how I imagined it :)













 
Last edited:

YanBG

Member
These pics aren't anything special, I need to get better at modelling
I like them, the textures look good too. Getting better is just putting more time and making it high-poly. Although i am using models for 2d and i'm not sure how heavy it will become for 3d engine.
 

Joe Ellis

Member
I like them, the textures look good too. Getting better is just putting more time and making it high-poly. Although i am using models for 2d and i'm not sure how heavy it will become for 3d engine.
Thanks, I like the style, this is the style I'm going for in one of the games I'm gonna make, abit like rayman 2 and spyro, I want it to look alot better than this in the end, but I'll just keep practicing and pick up techniques to hone the style
The textures are all from bitgem, I wanna end up making my own with similar style to these

A few more pics here:





 
Last edited:
Would you be able to use the models and animations without all the other parts, so you could have your own path finding or collision detection, because having an easy to use animator designed for GameMaker has already sold it to me (although the other stuff sounds amazing too).
 

Joe Ellis

Member
Would you be able to use the models and animations without all the other parts, so you could have your own path finding or collision detection, because having an easy to use animator designed for GameMaker has already sold it to me (although the other stuff sounds amazing too).
Yeah it should be pretty easy to just use certain parts, once you load a model using: model = model_load(filename), it returns the model data structure to the variable you chose and you can then assign the model to any number of objects you want and if the model has animations these are contained inside the model and its just one line to set which animation each instance uses.
 
Top