Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Jan 28 14:35
    wrc042 starred mosra/magnum
  • Jan 28 02:18
    faanqfung starred mosra/corrade
  • Jan 27 16:51
    coleekh starred mosra/magnum
  • Jan 27 16:51
    coleekh starred mosra/magnum-examples
  • Jan 27 09:24
    mrxz commented #99
  • Jan 26 14:36
    luqsthunder starred mosra/magnum
  • Jan 26 03:37
    mengguang starred mosra/corrade
  • Jan 25 19:28
    mosra synchronize #601
  • Jan 25 19:28

    mosra on line-rendering

    es3 builds! (compare)

  • Jan 25 09:55
    mosra edited #601
  • Jan 25 01:27
    ian-chiu starred mosra/magnum
  • Jan 24 22:58
    mosra edited #601
  • Jan 24 22:23
    mosra edited #601
  • Jan 24 22:22
    mosra edited #601
  • Jan 24 22:17
    mosra edited #601
  • Jan 24 22:17
    mosra synchronize #601
  • Jan 24 22:17

    mosra on line-rendering

    MeshTools: minor cleanup in a t… MeshTools: fix generateIndices(… MeshTools: check minimal vertex… and 11 more (compare)

  • Jan 24 12:42
    YalimD starred mosra/magnum
  • Jan 24 07:00
    Omni-Engineering starred mosra/toolchains
  • Jan 23 22:21
    mosra synchronize #601
Jamil Halabi
@jay3d
I don't know why Apple insists on keeping this archaic NextStep ways of doing things? I think the decision to buy Next instead of BeOS was a huge fundamental mistake! Look how simple is BeOS API!
And a dead language like Obj-c and a failed language like Swift.
Vladimír Vondruš
@mosra
:D and deprecating open APIs and making their own closed variants, forking ARM for private instructions, etc etc etc
Jamil Halabi
@jay3d
  MSVC 2019+ detected, automatically enabling CORRADE_MSVC_COMPATIBILITY
  which may cause some features to not be available.  You can disable this
  option if you pass /permissive- to the compiler to enable a
  standards-conforming mode.
What is exactly not available here?
And will it work on 2022?
Since they claim to be more conformant
Vladimír Vondruš
@mosra
2022 works, yes
i mean, it needs the same workarounds unless you pass /permissive- to it
IIRC it was mainly just some ambiguous operators, and the workaround is made in a way that wouldn't cause any API breakages in practice
Igal Alkon
@alkavan
I didn't know BeOS still kind of exist... I actually used it for a while.
image.png
Jamil Halabi
@jay3d
Single headers are always updated?
Vladimír Vondruš
@mosra
what do you mean?
Jamil Halabi
@jay3d
https://github.com/mosra/magnum-singles/blob/master/MagnumMath.hpp I mean should I run the script every time to generate this?
Vladimír Vondruš
@mosra
no, i would need to do that myself and adapt to the changes that happened since this was generated last time ... which i didn't for quite a while because there were other priorities
i thought you're using corrade and magnum directly, not through these headers?
Max Schwarz
@xqms
Hey @mosra, I just realized I spend a lot of time loading & pre-processing meshes... I guess I could cache the results more efficiently than I already do. Would you recommend your own mesh/scenedata format? Or GltfSceneConverter? I sometimes have scenes with multiple objects & meshes, so that's something that would need to be supported...
Vladimír Vondruš
@mosra
glTF is very close to an ideal representation (mainly due to how meshes are stored there), so i would recommend that one
Max Schwarz
@xqms
Thanks!
Vladimír Vondruš
@mosra
the only theoretical downside is the JSON representation of the high-level structure, but unless you have scenes with thousands of nodes or extremely huge materials the parsing shouldn't be a problem / perf issue in practice
Max Schwarz
@xqms
no, it's more like 3 objects ;)
Vladimír Vondruš
@mosra
haha okay, then that's fine :) eventually i plan to add support to directly serialize SceneData / MaterialData / MeshData to a binary file to remove even the JSON overhead, but in your case that would be a very minimal gain
GltfSceneConverter should support everything you need (except for cameras, lights and animations, which i suppose your datasets don't have), and if you have the sceneconverter utility built, a conversion of an arbitrary other OBJ, COLLADA, STL, PLY, FBX... to glTF is then a matter of doing just this:
magnum-sceneconverter some-horrible-xml.dae nice-and-tidy.glb
Max Schwarz
@xqms
Ok, I'll try that route! :)
In other news: Magnum was part of our university team winning the ANA Avatar XPRIZE (5 Mio USD prize money!) in November last year. Video with robot action: https://www.youtube.com/watch?v=EmESa2Olq4c&t=354s (seek to start if you like to hear more discussion). Magnum was used for low-latency VR rendering of the robot video stream. Details about that in our paper (https://arxiv.org/abs/2109.11373) and more generally on our (admittedly crappy) homepage: https://nimbro.net/AVATAR/
Vladimír Vondruš
@mosra
wow nice, that's great, congrats! :) i'll dig into it, lots of info to process :D
Max Schwarz
@xqms
Thanks :) Contact me if any of the material is of use to you or we can "give back" in some other way :)
Vladimír Vondruš
@mosra

@xqms I realized there's one important bit missing in the magnum-sceneconverter utility, in particular conversion of "classic" materials to PBR, meaning unless the input is PBR already, the output glTF will be material-less

the tools are already in place, it's just not wired into the utility yet for some reason, i'm going to do that now

Max Schwarz
@xqms
No worries - my initial plan would be to amend my pre-processing pipeline (which uses mostly AssimpImporter and then performs some operations/filtering on the mesh data and scene graph) to output the gltf itself. Maybe I can make my preprocessing steps available with magnum-sceneconverter later :)
Vladimír Vondruš
@mosra

right, so without the command line utility? everything it does is accessible through C++ APIs as well, so that should work too, and i'm slowly building also various scenegraph cleaning and processing tools

i intend to expose most of the processing APIs in Python eventually to make this scriptable, don't want to end up with sceneconverter having as many options as ffmpeg, it should stay a simple-to-use tool

this is what I do for another project, processing a ton of input models into a single huge glTF that's then taken as a "composite" with the intent of drawing the whole scene with a single (multi-)draw call: https://github.com/facebookresearch/habitat-sim/pull/1969/files

and just FYI, you don't need to bother with Assimp for OBJs and FBX anymore, there's a much better plugin now as well :)

Guillaume Jacquemin
@williamjcm
To be honest, I don't think this is a high bar to clear, considering your Assimp horror stories. :D
Max Schwarz
@xqms
Good to know, I have mainly OBJs so I should definitely switch. I've had my share of Assimp insanities as well xD
And yes, right now I have a custom C++ pipeline with Trade::SceneData and Trade::MeshData at the end and need to save/cache it somehow. So using the C++ API of the SceneConverter seems like the right route :)
Vladimír Vondruš
@mosra
yep, and for the material conversion go with MaterialTools::phongToPbrMetallicRoughness()
pezcode
@pezcode
I want to compare two Quaternions for equality with a custom epsilon. Can't use Compare::around() because Quaternion doesn't have operator<=. Is there a built-in way to do this that doesn't involve Vector4::from(quat.data())? Or is that my best option here
Vladimír Vondruš
@mosra
the vector cast is the best option i think, yeah
i'm not sure of the consequences of adding a <= given that it's a vector+scalar 🤔
but maybe it's fine
Vladimír Vondruš
@mosra
feel free to PR that if you want :)
Stanislaw Halik
@sthalik

@mosra, I have the following new patches:

  • constexpr StringView::operator<=> using __builtin_memcmp with fallback for msvc
  • constexpr StringView::operator== using the same logic
  • constexpr StringView(const char*, StringViewFlags = {}) using __builtin_strlen

the operator== patch is relatively useful, but I'm afraid that getting it past review will take more of your time than if you wrote it yourself

Vladimír Vondruš
@mosra
the last one is basically an implementation of https://github.com/mosra/corrade/issues/123#issuecomment-937903431, right? thus, depending on mosra/corrade#152, right? i still need to look into merging that one, only barely got the Clang 15 issues sorted out
what would be the use case for the constexpr comparison operators?
Stanislaw Halik
@sthalik
std::lower_bound uses operator<
my operator== uses the moral equivalent of jdumas' code from the very next comment
Vladimír Vondruš
@mosra
yes but what's the use case in a constexpr context
Stanislaw Halik
@sthalik
use-case had something to do with using __PRETTY_FUNCTION__ on a templated function as rtti
but yeah if you can't immediately think of a use-case then no point in pursuing that
Jamil Halabi
@jay3d
Utility::format does it support colors?
Vladimír Vondruš
@mosra
no, but Debug does
greg burgreen
@burgreen_gitlab
On osx, can I create a GL::Context that forces use of integrated graphics instead of GPU graphics? The GPU is black screening/resetting during app launch.