-3

カメラの後ろにあるものはすべて裏返しになっているようです。 現在のスクリーンショット

これは元のモデルです: オリジナルモデル

つまり、カメラは「フレーム」の右側の開口部にあります。

これが深さの計算です(問題はここにあると思います):

function 3dto2d(x, y, z) {
    var scale = cameradistance / (cameradistance - z);
    return {
        'x' : x * scale,
        'y' : y * scale
    };
}

誰かがこの問題を知っていますか?

編集:私はここに答えがあります:

function 3dto2d(x, y, z) {
    var scale = cameradistance / (cameradistance - (z >= cameradistance ? cameradistance - 1 : z));
    return {
        'x' : x * scale,
        'y' : y * scale
    };
}
4

1 に答える 1

4

これは、ポイントにが含まれている場合にも発生しましたz <= 0。これは、射影式が無効であるためです。ポイントが取得されるような方法でオブジェクトを回転させないでくださいz <= 0

数式y = 1 / xが原点を中心に点対称であるため、反転しています。したがって、x <= 0はにyなり-yます。例:、、1 / 2 = 1 / 2しかし 1 / -2 = - 1 / 2

z <= 0要点を言えば、値をz = 1(またはそれよりも小さいものに)マップするようにエンジンを変更するのが最善だと思います。もちろん、これは安いトリックですが。これにはおそらくもっと意味のあるテクニックがあります。

于 2011-05-30T17:41:46.713 に答える