Vortex2 beta released - 3D module

RonTek

Member
Joined
Jun 22, 2017
@JaviCervera So I found the scaling issue part which you already disabled, but the issue still exist as it seems..

https://github.com/JaviCervera/vortex/blob/master/src/bone.cxs#L205

Here's the result on the meshtool, you can see it kinda warps when running animations..



I have attached the ninja b3d model for reference and perhaps as an added example model that you can use for testing. Do you think this has something to do with the weight limits per bone?

https://www.dropbox.com/s/4zl59j8rb87163q/ninja.zip?dl=0

Thanks.
 

JaviCervera

Member
3rd Party Module Dev
Joined
Jul 12, 2017
Thanks for the model. That's the same problem as with the zombie mesh. The weight limit per bone is 4, which should be enough (Blitz3D had the same limit). I am using linear blend skinning, which does not always provide satisfactory results when blending several weights, but this bug is too severe. I'll see if switching to dual quaternion skinning fixes it.

Also, I simplified the animation system in the hopes to make it slightly faster, but I have to revert to a more complex system.

Fixing the animation system and finishing the new shader system (which should work on Android) are my top priorities now, so after that I will release beta2. My holidays start tomorrow, so I'll work on this and try to get it done before the end of the year or on the first days of 2018.
 
Last edited:

RonTek

Member
Joined
Jun 22, 2017
Sure thing and that sounds great! Looking forward to the new animation and shader system.
 

MikeHart

Administrator
Joined
Jun 19, 2017
Location
Germany
@JaviCervera I am glad you still work on this. Regarding the object picking, I decided to NOT port my game Card rogues to CX and so I am in no need for object picking right now.
 

Ferret3D

Member
Joined
Aug 13, 2017
I have two games in mind that don't need object picking.
So i don't need it now but it will be useful in the future.
 

Amishara

New Member
Joined
Jun 21, 2018
Hi, there!

Impressive piece of module! I actually love it. Thank you SO MUCH for the effort.:)
Is there any ETA for beta 2? I´m dying to see the new features.

Regards,
Amishara
 

SLotman

Member
Joined
Jul 3, 2017
I wish I could use this on a game idea I just had, but I can't seem to get animated meshes working :(

I have a (free) model I've got from the internet, edited / animated it on 3dmax - and exported it to b3d. Converted it with meshtool from /data folder, and the meshtool.exe shows the animated mesh (correctly, I think - it's too zoomed in so I can only see it moving)

But when I try to import it into a sample (the one with the soldier and the dwarf - I just change the dwarf for my mesh) - the mesh appears, but no animation plays... at all :(
The soldier is animated, but my mesh is sitting there, static :/

The converted model: https://drive.google.com/file/d/1M7ylz2Y6vxc5zmvL4m9HrVXx1rTQSmoP/view?usp=sharing
 

JaviCervera

Member
3rd Party Module Dev
Joined
Jul 12, 2017
Beta 2 has been released. This release brings lots of changes. API should be more or less stabilized now:
  • Added vertex animation support (which is now the default in meshtool since there is a bug with skinned meshes)
  • Added animation sequences
  • Shadow tex size can now be changed at runtime
  • Sun distance can be specified for shadow calculation
  • Added Shader class
  • Added previous depth pass to avoid computing redundant fragments
  • Added different draw modes to surfaces (points, lines, triangles, triangle strip, triangle fan)
  • Math3D library has been completely rewritten
  • Renamed Material.BaseTexture to Material.ColorTexture
  • Added Material.SpecularTexture
  • Added Material.CubeTexture and removed Reflection and Refraction textures (now a material can only have one cubemap)
  • Added Material.CubeOpacity
  • Added Lighting and ReceiveShadows properties to Material
  • Added Shader property to Material
  • Returned to previous FPS based animation system, instead of the duration based one
  • Does not parse GL version on init anymore to prevent crash on some old Android versions
  • Reduced the number of shader uniform and varying vars needed
  • Added different shaders:
    - Minimal: No normal or specular maps, no cube mapping, no shadows
    - Minimal with shadows: No normal or specular maps, no cube mapping
    - Vertex lighting: No normal or specular maps
    - Pixel lighting
  • Per pixel lighting is now the default
  • Removed World.GlobalPixelLighting (You can do Shader.DefaultType(Shader.TYPE_VERTEX_LIGHTING) to switch to vertex lighting)
  • Removed Cache class (added undocumented CacheSound function and Load method in classes with an optional cache param)
  • Added Mesh.CreateQuad
  • The script convert2monkey now also converts demos (I forgot that!)
  • Removed cubemap support for Material.ColorTexture (skyboxes are rendered with a custom shader)
  • Removed "Set" from all methods
  • Added Material.SpecularPower
  • Made default Material.Shininess 0.001
  • Added Color.Multiply
  • Public Renderer class renamed Graphics
  • Removed Stats class (DeltaTime is now on World, the rest on Graphics)
  • Mesh.UpdateBoundingBox has been renamed to Mesh.Rebuild, and now rebuilds all surfaces
  • Cameras now adjust the view and ratio automatically if ViewportWidth, ViewportHeight or AspectRatio is -1 (which is now the default)
  • Changed binary font format. Fonts generated with previous versions won't render correctly anymore
  • Several bug fixes
  • Thanks to SLotman from the Cerberus-X community for his help on Android!
NOTE: No macOS binaries are provided since Cerberus apps do not seem to currently compile under Mojave. I will upload them as soon as I get fixed.

Grab it from: https://github.com/JaviCervera/vortex/releases/tag/v2.0.0-beta2

Sorry for being absent these past months. There have been many changes in my life (I have a new job and moved to another city).
 

MikeHart

Administrator
Joined
Jun 19, 2017
Location
Germany
Tested it on Windows and OSX, ran smootly as expected. What I noticed is that any 2D operation in 3D like printing FPS info could a lot of FPS. For an example, without text it runs at 2900 FPS, when printing the FPS it runs at 1500 FPS.
 

JaviCervera

Member
3rd Party Module Dev
Joined
Jul 12, 2017
I applied the fix and it works. I have been working on Windows lately, and now I have tried Cerberus on my new MacBook Pro with a Retina Display and have noticed that the display is not correctly supported. Only the lower left quarter of the screen is rendered. Mojo samples are fixed after clicking on the window titlebar, but OpenGL apps (both the ones made in Vortex and the ones in the examples) remain using one quarter of the screen. This is probably an issue with the screen resolution reported by GLFW when setting the viewport, but is something that should be addressed if we want to support the majority of current Macs.

About the speed of 2D rendering, yes, it's less optimized than 3D rendering, and drawing a text basically requires one draw call per character, which is not the most efficient thing. While sprites can be easily optimized through batching, drawing dynamic text which could change every frame is trickier.
 

MikeHart

Administrator
Joined
Jun 19, 2017
Location
Germany
That retina issue is something i can't fix as i dont have a retina display. Are you on the latest CX?

Edit: I think we fixed that issue already. Which version of CX are you using?
 
Last edited:

JaviCervera

Member
3rd Party Module Dev
Joined
Jul 12, 2017
I have V2018-08-10, which I think is the last one.

I have made a quickfix which is not the ideal one but at least is better than having only the lower left corner rendered. On "targets/glfw3/template/glfw3/src/cocoa_window.m", you can comment line 1057 and change the parameter on line 1058 to NO:

//if (wndconfig->ns.retina)
[window->ns.view setWantsBestResolutionOpenGLSurface: NO];

This uses scaled mode, so all pixels are doubled on retina displays, but making a full resolution window would take more work (probably changing DeviceWidth and DeviceHeight to return screen size in pixels instead of screen coordinates, something that can be done with glfwGetFramebufferSize).
 
Top Bottom