簡體   English   中英

將位置從 3D 相機轉換為 2D 相機

[英]Translate position from 3D camera to 2D camera

目前我有 2 個攝像頭,一個用於查看 3D 對象(透視),另一個用於查看 2D 對象(正交)。
(此外,相機的視圖永遠不會相互攔截。)

我正在嘗試根據 3D 對象的位置顯示 2D 對象,如下所示: 我正在努力實現的目標的圖像

我擁有的是各自的 2D 和 3D Camera ,以及 3D GameObjectVector3位置。

我目前擁有的:

public Vector2 Convert3DPositionTo2DPosition(Camera camera3D, Vector3 position3D, Camera camera2D) {
    var tempPos = camera3D.WorldToViewportPoint(position3D);

    return camera2D.ViewportToWorldPoint(tempPos);
}

唯一的問題是返回的位置與 3D 位置不完全對齊。
這導致了這種結果: 預期和實際結果的圖像

此外,我已確保 3D 和 2D 對象的軸心點都正確設置在中心,但它仍然無法按預期工作。

(我目前使用的是Unity 2019.1.14f1

編輯

我想要的 TLDR:
我想要一個基於 3D 攝像機視角的對象的世界位置,該對象現在是 2D 攝像機視角,並且讓它們看起來像是在玩家視角(顯示屏)中處於相同位置。

之后我將要實例化的(使用該位置)是一個非 UI 游戲對象。
更具體地說是粒子系統。

檢查兩個CameraViewport Rect設置!

在此處輸入圖片說明

如果兩個相機之間有任何差異,您將始終在位置上獲得偏移量。

我使用測試了您的解決方案

public Camera camera3d;
public Camera camera2d;
public Transform obj3d;
public Transform obj2d;

void Update()
{ 
    obj2d.position = camera2d.ViewportToWorldPoint(camera3d.WorldToViewportPoint(obj3d.position)); 
}

並且它運行良好——只要Viewport Rect設置匹配——正如你在這里這里看到的那樣。

暫無
暫無

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

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