Three.js: WebGL Mirror مثال على القطع الأثرية

تم إنشاؤها على ١٧ أغسطس ٢٠١٧  ·  5تعليقات  ·  مصدر: mrdoob/three.js

يمكن إعادة إنتاج القطع الأثرية عن طريق تكبير الكاميرا وتحريكها قليلاً.

https://threejs.org/examples/webgl_mirror.html

screen shot 2017-08-16 at 8 53 26 pm

إصدار Three.js
  • [x] ديف
  • [x] r86
المستعرض
  • [x] كروم
نظام التشغيل
  • [x] macOS
Bug

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

mrdoob إذا كنت لا تزال تعبث ، أعتقد أن هناك مجالًا للتبسيط ...

//mirrorCamera.up.set( 0, - 1, 0 );
//mirrorCamera.up.applyMatrix4( rotationMatrix );
//mirrorCamera.up.reflect( normal ).negate();

mirrorCamera.up.set( 0, 1, 0 ).applyMatrix4( rotationMatrix ).reflect( normal );

ال 5 كومينتر

في الواقع.
انظر أيضًا هذا الموضوع: https://github.com/mrdoob/three.js/issues/11885
في النهاية شعرت أن المرآة لم يتم تنفيذها بشكل صحيح.

لا يتم نسخ نسبة العرض إلى الارتفاع للكاميرا الرئيسية إلى كاميرا المرآة.

// "examples/Mirror.js" (lines 142-146)
mirrorCamera.near = camera.near;
mirrorCamera.far = camera.far;
mirrorCamera.updateMatrixWorld();
mirrorCamera.updateProjectionMatrix();

يجب التغيير إلى:

mirrorCamera.updateMatrixWorld();
mirrorCamera.projectionMatrix.copy(camera.projectionMatrix);

سأرسل PR لهذا لاحقًا!

هناك مشكلة أخرى في المرآة (والمحيط المستوي) وهي أنه لا يبدو أنها تعمل عند تمكين logarithmicDepthBuffer . عبث مائل بالقرب من الطائرة بعمق ولم أجد حلًا لهذا الأمر. أتمنى أن يكون لدى WebGL glClipPlane 😞

vanruesc كنت العبث بالشفرة لذا قمت بتطبيقها مباشرة. شكرا جزيلا!

mrdoob إذا كنت لا تزال تعبث ، أعتقد أن هناك مجالًا للتبسيط ...

//mirrorCamera.up.set( 0, - 1, 0 );
//mirrorCamera.up.applyMatrix4( rotationMatrix );
//mirrorCamera.up.reflect( normal ).negate();

mirrorCamera.up.set( 0, 1, 0 ).applyMatrix4( rotationMatrix ).reflect( normal );

تضمين التغريدة

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