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

New Material Object Representation #7

Merged
merged 21 commits into from
Nov 17, 2021
Merged

New Material Object Representation #7

merged 21 commits into from
Nov 17, 2021

Conversation

treydinges
Copy link
Contributor

Added new implementation for material objects within BRL-CAD. This new object type is stored in the .g file as a mixture of binary and string data. The items stored by the object struct are as follows:

  • bu_vls name
  • bu_vls parent (currently awaiting implementation of polymorphism and inheritance)
  • bu_vls source
  • bu_attribute_value_set physicalProperties
  • bu_attribute_value_set mechanicalProperties
  • bu_attribute_value_set opticalProperties
  • bu_attribute_value_set thermalProperties

I have also added another method within AVS.c/h that is used for the material_describe function. It will get all of the items within the entire AVS as a VLS in a given format (Sean Morrison mentioned there are standards for how sets should be formatted so this might need some tweaking).

The team thought this implementation consisting of multiple AVS's allows for the separation of different types of properties, streamlining the use of material properties throughout the app.

The opticalProperties AVS set specifically is going to be used for our graphics team counterpart in rendering objects with different physical properties.

Copy link
Member

@brlcad brlcad left a comment

Choose a reason for hiding this comment

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

Looking at the direction the code took, bu_avs_get_all() is API-inconsistent. It's only being called as a helper to print to a string in the describe function. We don't want to introduce additional public API unnecessarily. I suggest either changing it to bu_avs_print_vls() and changing the implementation to be consistent with bu_avs_print() or changing the describe function implementation to access the avs directly.

Copy link
Member

@brlcad brlcad left a comment

Choose a reason for hiding this comment

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

This looks like a really good start to the new material object infrastructure. Thanks for all your efforts!

@brlcad brlcad merged commit 05c5cfb into BRL-CAD:main Nov 17, 2021
starseeker added a commit that referenced this pull request Dec 8, 2021
We don't want this to accidentally activate if -lasan is no longer a
requirement someday - BRL-CAD's code isn't ready for it yet.  In
particular, the LeakSanitizer trips up on the rt_free_rti/rt_clean
tangle as well as _db_walk_subtree.  The former may need elimination of
the rt_uniresource global to properly clean up, and the latter is deep
in the raytracing core and will have to be approached very carefully.

For convenience, here are the backtraces:

889: Test command: build/bin/gqa "-P" "1" "-Ao" "-p" "ovlp_" "brlcad/src/gtools/tests/../../libged/tests/ged_tests.g" "ovlp"
889: Test timeout computed to be: 1500
889: Trying initial grid spacing: 50 mm
889: Using grid spacing lower limit: 0.005 mm
889: Plotting overlaps to ovlp_overlaps.plot3
889: Processing with grid spacing 50 mm 44 x 48 x 39
889: Summary (50mm grid spacing):
889: list Overlaps:
889: /ovlp/r1 /ovlp/r2 count:2277 dist:1780.3mm @ (-248 350 -903.325)
889:
889: =================================================================
889: ==672620==ERROR: LeakSanitizer: detected memory leaks
889:
889: Direct leak of 524288 byte(s) in 1024 object(s) allocated from:
889:     #0 0x498087 in posix_memalign (build/bin/gqa+0x498087)
889:     #1 0x7f9d3ca476c3 in alloc brlcad/src/libbu/malloc.c:137:10
889:     #2 0x7f9d3ca478f6 in bu_calloc brlcad/src/libbu/malloc.c:174:12
889:     #3 0x7f9d3ca9b25e in bu_ptbl_init brlcad/src/libbu/ptbl.c:45:26
889:     #4 0x7f9d40d38be4 in rt_init_resource brlcad/src/librt/prep.c:855:2
889:     #5 0x7f9d40d3ba65 in rt_clean_resource brlcad/src/librt/prep.c:1063:5
889:     #6 0x7f9d40d3239a in rt_clean brlcad/src/librt/prep.c:1210:6
889:     #7 0x7f9d40d30f80 in rt_free_rti brlcad/src/librt/prep.c:170:5
889:     #8 0x7f9d380c4573  (<unknown module>)
889:     #9 0x7f9d424f2526 in ged_exec brlcad/src/libged/exec.cpp:83:16
889:     #10 0x7f9d424fd51b in ged_gqa brlcad/src/libged/exec_mapping.cpp:177:1
889:     #11 0x4c8b17 in main brlcad/src/gtools/gqa.c:105:11
889:     #12 0x7f9d3c6be0b2 in __libc_start_main /build/glibc-eX1tMB/glibc-2.31/csu/../csu/libc-start.c:308:16
889:
889: Direct leak of 524288 byte(s) in 1024 object(s) allocated from:
889:     #0 0x498087 in posix_memalign (build/bin/gqa+0x498087)
889:     #1 0x7f9d3ca476c3 in alloc brlcad/src/libbu/malloc.c:137:10
889:     #2 0x7f9d3ca478f6 in bu_calloc brlcad/src/libbu/malloc.c:174:12
889:     #3 0x7f9d3ca9b25e in bu_ptbl_init brlcad/src/libbu/ptbl.c:45:26
889:     #4 0x7f9d40d38c65 in rt_init_resource brlcad/src/librt/prep.c:858:2
889:     #5 0x7f9d380c0db2  (<unknown module>)
889:     #6 0x7f9d424f2526 in ged_exec brlcad/src/libged/exec.cpp:83:16
889:     #7 0x7f9d424fd51b in ged_gqa brlcad/src/libged/exec_mapping.cpp:177:1
889:     #8 0x4c8b17 in main brlcad/src/gtools/gqa.c:105:11
889:     #9 0x7f9d3c6be0b2 in __libc_start_main /build/glibc-eX1tMB/glibc-2.31/csu/../csu/libc-start.c:308:16
889:
889: Direct leak of 64 byte(s) in 2 object(s) allocated from:
889:     #0 0x498087 in posix_memalign (build/bin/gqa+0x498087)
889:     #1 0x7f9d3ca476c3 in alloc brlcad/src/libbu/malloc.c:137:10
889:     #2 0x7f9d3ca478f6 in bu_calloc brlcad/src/libbu/malloc.c:174:12
889:     #3 0x7f9d40ce3610 in _db_walk_subtree brlcad/src/librt/db_tree.c:1914:6
889:     #4 0x7f9d40cdd664 in _db_walk_dispatcher brlcad/src/librt/db_tree.c:1992:2
889:     #5 0x7f9d3ca795da in bu_parallel brlcad/src/libbu/parallel.c:574:2
889:     #6 0x7f9d40cdc2a2 in db_walk_tree brlcad/src/librt/db_tree.c:2199:5
889:     #7 0x7f9d41893a86 in rt_gettrees_muves brlcad/src/librt/tree.c:779:6
889:     #8 0x7f9d4189bb3f in rt_gettrees_and_attrs brlcad/src/librt/tree.c:883:12
889:     #9 0x7f9d4189bcba in rt_gettree brlcad/src/librt/tree.c:896:11
889:     #10 0x7f9d380c0e88  (<unknown module>)
889:     #11 0x7f9d424f2526 in ged_exec brlcad/src/libged/exec.cpp:83:16
889:     #12 0x7f9d424fd51b in ged_gqa brlcad/src/libged/exec_mapping.cpp:177:1
889:     #13 0x4c8b17 in main brlcad/src/gtools/gqa.c:105:11
889:     #14 0x7f9d3c6be0b2 in __libc_start_main /build/glibc-eX1tMB/glibc-2.31/csu/../csu/libc-start.c:308:16
889:
889: Direct leak of 64 byte(s) in 2 object(s) allocated from:
889:     #0 0x498087 in posix_memalign (build/bin/gqa+0x498087)
889:     #1 0x7f9d3ca476c3 in alloc brlcad/src/libbu/malloc.c:137:10
889:     #2 0x7f9d3ca478f6 in bu_calloc brlcad/src/libbu/malloc.c:174:12
889:     #3 0x7f9d40c2a4bc in rt_comb_import5 brlcad/src/librt/comb/comb.c:518:6
889:     #4 0x7f9d40c79613 in rt_db_external5_to_internal5 brlcad/src/librt/db5_io.c:958:8
889:     #5 0x7f9d40c79e9f in rt_db_get_internal5 brlcad/src/librt/db5_io.c:998:11
889:     #6 0x7f9d40ce6b76 in rt_db_get_internal brlcad/src/librt/dir.c:131:9
889:     #7 0x7f9d40cd31b4 in db_recurse brlcad/src/librt/db_tree.c:1016:6
889:     #8 0x7f9d40ce34ee in _db_walk_subtree brlcad/src/librt/db_tree.c:1898:16
889:     #9 0x7f9d40cdd664 in _db_walk_dispatcher brlcad/src/librt/db_tree.c:1992:2
889:     #10 0x7f9d3ca795da in bu_parallel brlcad/src/libbu/parallel.c:574:2
889:     #11 0x7f9d40cdc2a2 in db_walk_tree brlcad/src/librt/db_tree.c:2199:5
889:     #12 0x7f9d41893a86 in rt_gettrees_muves brlcad/src/librt/tree.c:779:6
889:     #13 0x7f9d4189bb3f in rt_gettrees_and_attrs brlcad/src/librt/tree.c:883:12
889:     #14 0x7f9d4189bcba in rt_gettree brlcad/src/librt/tree.c:896:11
889:     #15 0x7f9d380c0e88  (<unknown module>)
889:     #16 0x7f9d424f2526 in ged_exec brlcad/src/libged/exec.cpp:83:16
889:     #17 0x7f9d424fd51b in ged_gqa brlcad/src/libged/exec_mapping.cpp:177:1
889:     #18 0x4c8b17 in main brlcad/src/gtools/gqa.c:105:11
889:     #19 0x7f9d3c6be0b2 in __libc_start_main /build/glibc-eX1tMB/glibc-2.31/csu/../csu/libc-start.c:308:16
889:
889: SUMMARY: AddressSanitizer: 1048704 byte(s) leaked in 2052 allocation(s).
zhuodannychen added a commit to zhuodannychen/brlcad that referenced this pull request May 9, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants