Torus doesn't render at camera's position
Test scene is just a default 3D scene with this script attached to the camera:
using UnityEngine; using Shapes; [ExecuteAlways] public class ShapesTest : ImmediateModeShapeDrawer { public bool AddOffset = true; public bool UseLocalSpace = true; public override void DrawShapes( Camera cam ) { using( Shapes.Draw.Command( cam ) ) { Shapes.Draw.LineGeometry = LineGeometry.Volumetric3D; Shapes.Draw.ThicknessSpace = ThicknessSpace.Meters; var r = 5f; var th = 0.25f; if( UseLocalSpace ) { Shapes.Draw.Matrix = transform.localToWorldMatrix; var position = AddOffset ? Vector3.forward*0.0001f : Vector3.zero; var color = AddOffset ? Color.green : Color.cyan; Shapes.Draw.Torus( position, Vector3.up, r, th, color ); } else { Shapes.Draw.Matrix = Matrix4x4.identity; var position = AddOffset ? transform.position + Vector3.forward*0.0001f : transform.position; var color = AddOffset ? Color.red : Color.magenta; Shapes.Draw.Torus( position, Vector3.up, r, th, color ); } } } }
When "AddOffset" is true, the torus draws, the desired effect is achieved - camera is inside the torus' centre.
When "AddOffset" is false, torus is not drawn - which to me feels like a bug? I can't blame the camera's culling volume on it - the offset is way smaller than camera's default NearClipPlane of 0.3.
Changing the drawing space has no effect on the behavior.
It's not super-critical for my case, I can live with a workaround, but feels fishy, maybe worth investigating.
P.S.
Shapes rock!
Reporting a bug? please specify Unity version:
2020.3.45
Reporting a bug? please specify Shapes version:
4.2.1
Reporting a bug? please specify Render Pipeline:
Built-in render pipeline
hah, this is such an edge case that will only ever happen if the center of a torus is exactly at the camera location
tldr: Shapes often needs to know thickness values in pixels rather than meters, and in some cases this is measured from the origin of the object. And when you've got a perspective projection, the pixels per meter value shoots up to infinity exactly at the camera origin