簡體   English   中英

如何在 X 軸上鏡像 3D 網格

[英]How to mirror a 3D mesh on the X axis

我正在開發 C++ 3D 游戲,當我從屏幕上的 glTF 文件加載網格時,我遇到了網格外觀問題。 是我正在嘗試加載的 3D model。

我正在使用 DirectX 11。

我裝的音箱

如您所見,網格在 X 軸上翻轉,我不知道如何翻轉才能看起來正常。

揚聲器正確

這就是我想要的樣子。

    struct VS_INPUT
    {
        float4 position: POSITION0;
        float2 texcoord: TEXCOORD0;
        float3 normal: NORMAL0;
    };
    
    struct VS_OUTPUT
    {
        float4 position: SV_POSITION;
        float2 texcoord: TEXCOORD0;
        float3 normal: NORMAL0;
        float3 direction_to_camera: TEXCOORD1;
    };
    
    
    cbuffer constant: register(b0)
    {
        row_major float4x4 m_world;
        row_major float4x4 m_view;
        row_major float4x4 m_proj;
    
        float4 m_light_direction;
        float4 m_camera_position;
    
        float4 m_light_position;
        float m_light_radius;
    };
    
    
    
    VS_OUTPUT vsmain(VS_INPUT input)
    {
        VS_OUTPUT output = (VS_OUTPUT)0;
    
        // WORLD SPACE
        output.position = mul(input.position, m_world);
        output.direction_to_camera = normalize(output.position - m_camera_position.xyz);
        // VIEW SPACE
        output.position = mul(output.position, m_view);
        // SCREEN SPACE
        output.position = mul(output.position, m_proj);
    
    
        output.texcoord = input.texcoord;
        output.normal = normalize(mul(input.normal, m_world));
        return output;
    }

這是我正在使用的頂點着色器。

output.position.x = -output.position.x; in vertex shader

或者在加載網格和解析頂點時反轉頂點的 x 坐標。

v.x = -v.x;

或在 x 軸上縮放 -1 應該可以解決問題。

SetScale( -1.0f, 1.0f, 1.0f );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM