Three.js: إظهار / إخفاء Object3D؟

تم إنشاؤها على ١٠ يونيو ٢٠١١  ·  14تعليقات  ·  مصدر: mrdoob/three.js

أحاول معرفة كيفية إظهار / إخفاء Object3D وأطفاله في أي لحظة.

  • مع الخاصية المرئية؟
  • ترجمتها من الإحباط؟
  • اي فكرة ؟
Question

التعليق الأكثر فائدة

يمكنك فقط استدعاء
myObj3D.visible = خطأ. يبدو أن هذا يخفي كل ما هو طفل من Object3D الخاص بك

استدعاء myObj3D.visible = true يعرض كل شيء.

ال 14 كومينتر

حاليًا يمكنك القيام بذلك على النحو التالي:

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

شكرًا ، سألقي نظرة عليه!

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات