Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Export lights to dae #228

Merged
merged 6 commits into from
Jul 19, 2021
Merged

Export lights to dae #228

merged 6 commits into from
Jul 19, 2021

Conversation

ddengster
Copy link
Contributor

@ddengster ddengster commented Jul 12, 2021

🎉 New feature

Closes #901

Downstream PR

Summary

  • Exports lights for the collada world exporter. Based off the collada 1.4 spec
  • Test added for collada exporter exporting lights

Test it

run ./build/ignition-common4/bin/UNIT_ColladaExporter_TEST

Checklist

  • Signed all commits for DCO
  • Added tests
  • Added example and/or tutorial
  • Updated documentation (as needed)
  • Updated migration guide (as needed)
  • codecheck passed (See contributing)
  • All tests passed (See test coverage)
  • While waiting for a review on your PR, please help review another open pull request to support the maintainers

Note to maintainers: Remember to use Squash-Merge

ddengster added 2 commits July 9, 2021 16:21
Signed-off-by: ddengster <ed.fan@osrfoundation.org>
Signed-off-by: ddengster <ed.fan@osrfoundation.org>
@github-actions github-actions bot added 🏢 edifice Ignition Edifice 🏯 fortress Ignition Fortress labels Jul 12, 2021
@ddengster ddengster marked this pull request as ready for review July 12, 2021 07:23
@ddengster ddengster requested a review from mjcarroll as a code owner July 12, 2021 07:23
Signed-off-by: ddengster <ed.fan@osrfoundation.org>
graphics/include/ignition/common/ColladaExporter.hh Outdated Show resolved Hide resolved
graphics/src/ColladaExporter.cc Show resolved Hide resolved
graphics/src/ColladaExporter_TEST.cc Outdated Show resolved Hide resolved
EXPECT_TRUE(technique);
auto spot = technique->FirstChildElement("spot");
EXPECT_TRUE(spot);
auto color = spot->FirstChildElement("color");
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you need these variables?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

removed 1b7602b

graphics/src/ColladaExporter_TEST.cc Outdated Show resolved Hide resolved
Signed-off-by: ddengster <ed.fan@osrfoundation.org>
graphics/src/ColladaExporter_TEST.cc Outdated Show resolved Hide resolved
@codecov
Copy link

codecov bot commented Jul 13, 2021

Codecov Report

Merging #228 (6cc6b12) into ign-common4 (d739215) will increase coverage by 0.15%.
The diff coverage is 100.00%.

❗ Current head 6cc6b12 differs from pull request most recent head 1b7602b. Consider uploading reports for the commit 1b7602b to get more accurate results
Impacted file tree graph

@@               Coverage Diff               @@
##           ign-common4     #228      +/-   ##
===============================================
+ Coverage        76.83%   76.99%   +0.15%     
===============================================
  Files               74       74              
  Lines            10491    10563      +72     
===============================================
+ Hits              8061     8133      +72     
  Misses            2430     2430              
Impacted Files Coverage Δ
graphics/src/ColladaExporter.cc 95.88% <100.00%> (+0.71%) ⬆️

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update d739215...1b7602b. Read the comment docs.

Signed-off-by: ddengster <ed.fan@osrfoundation.org>
Signed-off-by: ddengster <ed.fan@osrfoundation.org>
@mjcarroll mjcarroll merged commit d1f45f4 into gazebosim:ign-common4 Jul 19, 2021
math::Vector3d direction;

/// \brief Light position (non directional lights only)
math::Vector3d position;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As I commented on gazebosim/gz-sim#912 (comment), we should use the light's full math::Pose3d and apply a direction on top of that.

Now that this has been released, we can't extend this struct though. That's why we prefer full classes with getters and setters using the PIMPL pattern; they involve a lot more boilerplate, but at least they can be extended without breaking ABI.

I think the solution will have to be calculating the direction field based on the light's pose orientation together with the light's direction.

/// \brief Light position (non directional lights only)

For directional lights, the position doesn't affect how they light up the scene, but it's often useful to set so we choose where the light's visual representation shows up on the GUI.

Copy link
Contributor Author

@ddengster ddengster Aug 18, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry for the delayed reply, was pushing some deadlines.

Now that this has been released, we can't extend this struct though.

If I may ask, why so? Is there some technical reason?

This struct is specifically used for collada exporting - I tried to make it stick as close as possible to collada specifications. Most notably their <light> tag is omitting information on all orientations and direction - meaning that I have to push the transform data to it's parent node that instantiates the light under <node>.

We can use math::Pose3d but it's orientation component has it's members set to private as seen here, and in addition there's another problem where the collada specification's <rotate> tag is not be the same as a quaternion.

Reference https://www.khronos.org/files/collada_spec_1_4.pdf, search for <light>

This does mean if anyone decides to use it for something else they are taking on certain risks. It's something I would expect not many users to be using.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If I may ask, why so? Is there some technical reason?

ABI compatibility 😕


I think you may have solved the issue in gazebosim/gz-sim#912 (comment)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🏢 edifice Ignition Edifice 🏯 fortress Ignition Fortress
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Feature] Export lights for collada world exporter
4 participants