• Website
  • Search
  • Member List
  • Help
  • Old Forum
  • Social Media
    •   @Wings3dOfficial
    •   @Wings3dOfficial
    •   Wings3dOfficial
    •   Wings3dOfficial
  • Register
  • Login
  • Website
  • Search
  • Member List
  • Help
  • Old Forum
  • Register
  • Login
Wings 3D Development Forum Wings 3D Bug Reports Current Version of Wings3D - bug reports [stand-by] Crash patterns of Boolean operation.

 
  • 0 Vote(s) - 0 Average
[stand-by] Crash patterns of Boolean operation.

tkbd
Offline

Senior Member

Posts: 451
Threads: 115
Joined: Nov 2012
#1
02-02-2019, 04:04 AM (This post was last modified: 02-15-2020, 07:43 AM by micheus.)
Hi,
The past few days,I checked boolean operations under some face attribute combinations.
(For example the faces that has hidden,hole,invert and/or conditions with complex etc...)
Some worked normally, and some output crash logs.

Other than that,an interesting result was obtained by unioning objects whose inverted normals.
(Actually several steps are necessary to get this result. invert and separate)
I think that it is useful even if there is "engraved edge" with the Boolean command.



Boolean with invert normal (Intersect)
Code:
Dump written 2019-2-1_11-10
Version: 2.2.2
OS: Mac OS X (Darwin 18.2.0 x86_64)
GPU: Intel Inc. | Intel(R) Iris(TM) Pro Graphics 6200
Window: geom
Reason: {case_clause,[22,23]}

Stack trace:
[{wings_bool,'-build_parts/2-fun-1-',4,[{file,"wings_bool.erl"},{line,301}]},
{lists,foldl,3,[{file,"lists.erl"},{line,1263}]},
{wings_bool,build_parts,2,[{file,"wings_bool.erl"},{line,306}]},
{wings_bool,merge_2,5,[{file,"wings_bool.erl"},{line,236}]},
{wings_bool,find_intersect_1,3,[{file,"wings_bool.erl"},{line,169}]},
{wings_bool,find_intersect,3,[{file,"wings_bool.erl"},{line,159}]},
{wings_sel,dfold_1,5,[{file,"wings_sel.erl"},{line,236}]},
{wings_bool,do_bool,2,[{file,"wings_bool.erl"},{line,83}]},
{wings_body,command,2,[{file,"wings_body.erl"},{line,234}]},
{wings_develop,time_command,2,[{file,"wings_develop.erl"},{line,87}]},
{wings,raw_command,4,[{file,"wings.erl"},{line,625}]},
{wings_wm,handle_event,3,[{file,"wings_wm.erl"},{line,982}]},
{wings_wm,send_event,2,[{file,"wings_wm.erl"},{line,948}]},
{wings_wm,do_dispatch,2,[{file,"wings_wm.erl"},{line,849}]},
{wings_wm,dispatch_event,1,[{file,"wings_wm.erl"},{line,758}]},
{wings_wm,get_and_dispatch,0,[{file,"wings_wm.erl"},{line,657}]},
{wings,init_part2,2,[{file,"wings.erl"},{line,106}]},
{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,249}]}]




Boolean with invert normal (Differnce)
Code:
Dump written 2019-2-1_11-9
Version: 2.2.2
OS: Mac OS X (Darwin 18.2.0 x86_64)
GPU: Intel Inc. | Intel(R) Iris(TM) Pro Graphics 6200
Window: geom
Reason: {case_clause,[22,23]}

Stack trace:
[{wings_bool,'-build_parts/2-fun-1-',4,[{file,"wings_bool.erl"},{line,301}]},
{lists,foldl,3,[{file,"lists.erl"},{line,1263}]},
{wings_bool,build_parts,2,[{file,"wings_bool.erl"},{line,308}]},
{wings_bool,merge_2,5,[{file,"wings_bool.erl"},{line,236}]},
{wings_bool,find_intersect_1,3,[{file,"wings_bool.erl"},{line,169}]},
{wings_bool,find_intersect,3,[{file,"wings_bool.erl"},{line,159}]},
{wings_sel,dfold_1,5,[{file,"wings_sel.erl"},{line,236}]},
{wings_bool,sub,2,[{file,"wings_bool.erl"},{line,73}]},
{wings_bool,'-sub/1-fun-0-',2,[{file,"wings_bool.erl"},{line,60}]},
{wings,handle_event_3,2,[{file,"wings.erl"},{line,414}]},
{wings_wm,handle_event,3,[{file,"wings_wm.erl"},{line,981}]},
{wings_wm,send_event,2,[{file,"wings_wm.erl"},{line,948}]},
{wings_wm,do_dispatch,2,[{file,"wings_wm.erl"},{line,849}]},
{wings_wm,dispatch_event,1,[{file,"wings_wm.erl"},{line,758}]},
{lists,all,2,[{file,"lists.erl"},{line,1213}]},
{wings_wm,redraw_win,1,[{file,"wings_wm.erl"},{line,886}]},
{lists,foreach,2,[{file,"lists.erl"},{line,1338}]},
{wings_wm,redraw_all,0,[{file,"wings_wm.erl"},{line,865}]},
{wings,init_part2,2,[{file,"wings.erl"},{line,106}]},
{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,249}]}]



Boolean with invert normal
Code:
Dump written 2019-2-1_11-8
Version: 2.2.2
OS: Mac OS X (Darwin 18.2.0 x86_64)
GPU: Intel Inc. | Intel(R) Iris(TM) Pro Graphics 6200
Window: geom
Reason: function_clause

Short stack trace:
[{lists,zip,2,[{file,"lists.erl"},{line,387}]},
{wings_bool,weld,2,[{file,"wings_bool.erl"},{line,500}]},
{wings_bool,merge_2,5,[{file,"wings_bool.erl"},{line,237}]},
{wings_bool,find_intersect_1,3,[{file,"wings_bool.erl"},{line,169}]},
{wings_bool,find_intersect,3,[{file,"wings_bool.erl"},{line,159}]},
{wings_sel,dfold_1,5,[{file,"wings_sel.erl"},{line,236}]},
{wings_bool,do_bool,2,[{file,"wings_bool.erl"},{line,83}]},
{wings_body,command,2,[{file,"wings_body.erl"},{line,231}]},
{wings_develop,time_command,2,[{file,"wings_develop.erl"},{line,87}]},
{wings,raw_command,4,[{file,"wings.erl"},{line,625}]},
{wings_wm,handle_event,3,[{file,"wings_wm.erl"},{line,982}]},
{wings_wm,send_event,2,[{file,"wings_wm.erl"},{line,948}]},
{wings_wm,do_dispatch,2,[{file,"wings_wm.erl"},{line,849}]},
{wings_wm,dispatch_event,1,[{file,"wings_wm.erl"},{line,758}]},
{wings_wm,get_and_dispatch,0,[{file,"wings_wm.erl"},{line,657}]},
{wings,init_part2,2,[{file,"wings.erl"},{line,106}]},
{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,249}]}]

Long stack trace:
[{lists,zip,[[],[22]],[{file,"lists.erl"},{line,387}]},
{wings_bool,weld,2,[{file,"wings_bool.erl"},{line,500}]},
{wings_bool,merge_2,5,[{file,"wings_bool.erl"},{line,237}]},
{wings_bool,find_intersect_1,3,[{file,"wings_bool.erl"},{line,169}]},
{wings_bool,find_intersect,3,[{file,"wings_bool.erl"},{line,159}]},
{wings_sel,dfold_1,5,[{file,"wings_sel.erl"},{line,236}]},
{wings_bool,do_bool,2,[{file,"wings_bool.erl"},{line,83}]},
{wings_body,command,2,[{file,"wings_body.erl"},{line,231}]},
{wings_develop,time_command,2,[{file,"wings_develop.erl"},{line,87}]},
{wings,raw_command,4,[{file,"wings.erl"},{line,625}]},
{wings_wm,handle_event,3,[{file,"wings_wm.erl"},{line,982}]},
{wings_wm,send_event,2,[{file,"wings_wm.erl"},{line,948}]},
{wings_wm,do_dispatch,2,[{file,"wings_wm.erl"},{line,849}]},
{wings_wm,dispatch_event,1,[{file,"wings_wm.erl"},{line,758}]},
{wings_wm,get_and_dispatch,0,[{file,"wings_wm.erl"},{line,657}]},
{wings,init_part2,2,[{file,"wings.erl"},{line,106}]},
{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,249}]}]


Boolean with a face that has inverted normal and a hole.
Code:
Dump written 2019-2-1_11-13
Version: 2.2.2
OS: Mac OS X (Darwin 18.2.0 x86_64)
GPU: Intel Inc. | Intel(R) Iris(TM) Pro Graphics 6200
Window: geom
Reason: {case_clause,[22,23]}

Stack trace:
[{wings_bool,'-build_parts/2-fun-1-',4,[{file,"wings_bool.erl"},{line,301}]},
{lists,foldl,3,[{file,"lists.erl"},{line,1263}]},
{wings_bool,build_parts,2,[{file,"wings_bool.erl"},{line,308}]},
{wings_bool,merge_2,5,[{file,"wings_bool.erl"},{line,236}]},
{wings_bool,find_intersect_1,3,[{file,"wings_bool.erl"},{line,169}]},
{wings_bool,find_intersect,3,[{file,"wings_bool.erl"},{line,159}]},
{wings_sel,dfold_1,5,[{file,"wings_sel.erl"},{line,236}]},
{wings_bool,do_bool,2,[{file,"wings_bool.erl"},{line,83}]},
{wings_body,command,2,[{file,"wings_body.erl"},{line,234}]},
{wings_develop,time_command,2,[{file,"wings_develop.erl"},{line,87}]},
{wings,raw_command,4,[{file,"wings.erl"},{line,625}]},
{wings_wm,handle_event,3,[{file,"wings_wm.erl"},{line,982}]},
{wings_wm,send_event,2,[{file,"wings_wm.erl"},{line,948}]},
{wings_wm,do_dispatch,2,[{file,"wings_wm.erl"},{line,849}]},
{wings_wm,dispatch_event,1,[{file,"wings_wm.erl"},{line,758}]},
{wings_wm,get_and_dispatch,0,[{file,"wings_wm.erl"},{line,657}]},
{wings,init_part2,2,[{file,"wings.erl"},{line,106}]},
{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,249}]}]
micheus
Offline

Forum's Admin and Support | Bug fixer
Posts: 3,682
Threads: 185
Joined: Jun 2012
#2
03-25-2019, 05:54 PM
tkbd thanks for such effort to check all the possibilities in which boolean could to fail.

I just don't know when they will be fixed, but at least it's working fine for regular objects. The situation involving objects with inverted normal is an atypical situation.
[Image: tw.png] @MicheusVieira [Image: yt.png] @MicheusVieira [Image: da.png] Micheuss [Image: ig.png] micheus4wings3d
* Wings3D Team stands for: Björn and Dan
« Next Oldest | Next Newest »

Users browsing this thread: 1 Guest(s)



  • View a Printable Version
  • Subscribe to this thread
Forum Jump:

© Designed by D&D - Powered by MyBB

Linear Mode
Threaded Mode