يمكن إعادة إنتاج القطع الأثرية عن طريق تكبير الكاميرا وتحريكها قليلاً.
https://threejs.org/examples/webgl_mirror.html
في الواقع.
انظر أيضًا هذا الموضوع: 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 );
تضمين التغريدة
التعليق الأكثر فائدة
mrdoob إذا كنت لا تزال تعبث ، أعتقد أن هناك مجالًا للتبسيط ...