godotengine / godotengine/godot

Negative scale camera 3D does not work

Open
#95,685 0 comments 0 reactions 0 assignees View on GitHub
bug topic:3d topic:rendering
Dominant language
C++
Stars
117k
Forks
26.8k
PR merge metrics
PR metrics pending

Description

### Tested versions

v4.3.stable.official [77dcf97d8]

### System information

Godot v4.3.stable - Windows 10.0.22631 - Vulkan (Forward+) - dedicated NVIDIA GeForce GTX 1060 6GB (NVIDIA; 31.0.15.3623) - Intel(R) Core(TM) i5-9400F CPU @ 2.90GHz (6 Threads)

### Issue description

If Camera3D is negative scale, it will not function properly except for cull back.

① positive scale camera
![editor_screenshot_2024-08-17T161213](https://github.com/user-attachments/assets/c452c669-46ef-47b1-a698-a6af7b373c35)

② negative x scale camera ,cull back
![editor_screenshot_2024-08-17T161223](https://github.com/user-attachments/assets/d7c45854-1149-47f6-8cb9-5eae0d3a4381)

③ negative x scale camera ,cull disable
![editor_screenshot_2024-08-17T161242](https://github.com/user-attachments/assets/e7290ae0-9a2b-41c2-92cc-2d4fa40a5973)

Image of a cull disable mesh viewed from the inside with a positive scale camera
(Looking toward the camera in image ③)
![editor_screenshot_2024-08-17T162014](https://github.com/user-attachments/assets/fe5395ca-3279-44e9-a121-e09d8a5e2715)

The camera appears to show the mesh on the back side.

I used a translator.

### Steps to reproduce

Add a Directional Light 3D node to the scene.
Add a Camera 3D node to the scene.
Add a MeshInstance3D node to the scene.
Assign a mesh to the MeshInstance3D.
Set the material of the mesh to something other than Cull Back.
Set the Camera3D scale to negative.

### Minimal reproduction project (MRP)

N/A

Contributor guide

Open the contributing guide

Research direction

Reproduce the issue using the listed DirectionalLight3D, Camera3D, and MeshInstance3D setup, then trace the Camera3D negative-scale path involved in rendering and culling. Compare positive and negative X-scale results with different mesh cull modes; done means the camera displays the mesh correctly for the reported configurations.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, godot
Domain
computer-graphics, game-dev
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.