nfrechette / nfrechette/rtm

Add support for arbitrary coordinate systems

Open
#206 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
C++
Stars
799
Forks
51
PR merge metrics
No merged PRs in 30d

Description

Might need to go in a major release as it might be quite a big change.
See #92 for prior discussion.

The idea is to expose to the host runtime a mechanism for specifying the default coordinate system that RTM is compiled with. This would allow it to just work with things like rotation matrices and look at transforms. A template argument could be added to functions that care about it, along the lines of:

template<class coord = RTM_DEFAULT_COORDINATE_SYSTEM>
matrix3x4f look_at(vector4f position, vector4f direction, vector4f up)

Callers can just use loop_at(foo, bar, up) to use the default coordinate system (the one specified by the host runtime) or they can explicitly provide one (e.g rtm::coord:maya) for import/export purposes. I haven't seen anything quite like this used out there, so it'll be experimental in a way. Hopefully it pans out without too many complications.

Questions that arise with a design like this:

  • Does it scale?
  • Is it easy/possible to implement functions that are coordinate system agnostic (e.g. look_at)?
  • How do they compose (callers need to expose/propagate the template argument if they wish to be agnostic)?

See how the FBX SDK handles it.

A WIP draft is available in the research/coordinate-system branch.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading the prior discussion in #92, the FBX SDK axis-system reference, and the WIP research/coordinate-system branch. Resolve whether the proposed default and explicit coordinate-system mechanism scales, supports coordinate-system-agnostic functions, and composes across callers; done requires an agreed design and corresponding implementation plan.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
computer-graphics
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.