أحاول معرفة كيفية إظهار / إخفاء Object3D وأطفاله في أي لحظة.
حاليًا يمكنك القيام بذلك على النحو التالي:
THREE.SceneUtils.traverseHierarchy( object, function ( object ) { object.visible = false; } );
شكر! أنه يعمل مثل السحر.
لمعلوماتك - لإخفاء جميع العناصر التابعة لـ myObject3D ، يجب قراءة المقتطف أعلاه الآن:
myObject3D.traverse( function ( object ) { object.visible = false; } );
أعتقد أن هذه الوظيفة لم يتم حلها بعد. أريد إخفاء شيء ما (إخفاء جميع الأطفال) ولكن الطريقة الحالية للقيام بذلك (العبور) ليست مجدية لأنني أريد الحفاظ على الحالة المرئية لأطفالها. على سبيل المثال ، بعض الأطفال مرئيين والبعض الآخر لا ؛ يجب أن يؤدي إخفاء الوالد إلى إخفاء جميع الأطفال ولكن إظهاره مرة أخرى يجب أن يُظهر الأطفال الذين كانوا مرئيين من قبل.
أنا موافق. يحتاج WebGLRenderer
لاستيعاب ذلك. إنه شيء علي أن أفعله.
لمعلوماتك: الإعداد المرئي على أحد الوالدين يؤثر الآن على الأطفال أيضًا. (تم اختباره مع r71)
باستخدام r72. لا يبدو أن الإعداد المرئي على الوالدين يؤثر على الأطفال. هل تغيرت الوظيفة مرة أخرى؟
agnivade لا ، لم يتغير. تعيين visible
إلى false
يعني أنه لن يتم عرض الكائن أو توابعه ، بغض النظر عن الأطفال visible
. إذا تم تعيين visible
على true
، فلن يتم عرض الأطفال إلا إذا تم تعيين visible
على true
.
شكر. يجب أن يكون هناك خطأ ما في الكود الخاص بي بعد ذلك ، سوف نتحقق.
شكر
يمكنك فقط استدعاء
myObj3D.visible = خطأ. يبدو أن هذا يخفي كل ما هو طفل من Object3D الخاص بك
استدعاء myObj3D.visible = true يعرض كل شيء.
إنها مناقشة قديمة ، ولكن هناك تحذير مهم هنا ، تعيين مرئي على خطأ "فقط" يخفي الكائن وهو أطفال للكاميرا ، لكنهم لا يزالون مرئيين لمنسق الشعاع ، ما لم تستخدم طبقتين مختلفتين وقمت بتعطيلهما من الطبقة مراقب الشعاع يراقب. إذا كنت ترغب في جعلها غير مرئية تمامًا ، فستحتاج إلى تعطيلها في الطبقة التي يستخدمها المسؤول عن الأشعة.
أستخدم الطبقتين 0 و 1 للكاميرا ، والطبقة 0 فقط للبث الشعاعي ، لذلك يمكنني الحصول على كائنات مرئية وبث الأشعة:
obj.layers.enable(0);
obj.visible = true;
كائنات مرئية ولكن غير مشعة:
obj.layers.disable(0);
obj.layers.enable(1);
obj.visible = true;
والأشياء المخفية وغير المشعة:
obj.layers.disable(0);
obj.layers.enable(1);
obj.visible = false;
@ jscastro76 قد تكون مهتمًا بـ https://github.com/mrdoob/three.js/pull/19012
شكرًا ، سألقي نظرة عليه!
التعليق الأكثر فائدة
يمكنك فقط استدعاء
myObj3D.visible = خطأ. يبدو أن هذا يخفي كل ما هو طفل من Object3D الخاص بك
استدعاء myObj3D.visible = true يعرض كل شيء.