質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

3DCG

コンピュータの演算により、3次元空間の仮想物体を、2次元平面上で表現する手法である。

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

Q&A

解決済

2回答

815閲覧

[Processing 3D]カメラの中心を画面の中心からずらしたい

sakurairo

総合スコア1

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

3DCG

コンピュータの演算により、3次元空間の仮想物体を、2次元平面上で表現する手法である。

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

0グッド

0クリップ

投稿2022/09/10 14:43

編集2023/08/16 18:41

Processingでカメラの中心を画面の中心からずらしたいです。
イメージ説明
この表示を
イメージ説明
このようにカメラの中心そのものを画面中心以外に設定したいのです(上記画像は元画像を編集したものです)が、
camera関数でカメラを動かしてもカメラの中心が画面中心のままなので
イメージ説明
このように傾いてしまいます。
カメラの中心を画面中心から移動する事は可能でしょうか?

ソースコード

Processing

1size(800, 600, P3D); 2noFill(); 3 4//camera(600, 300, 500, 600, 300, -100, 0, 1, 0);//3つ目の画像のカメラ 5translate(300, 200); 6box(150); 7translate(200, 200); 8box(150); 9translate(0, -200, -600); 10box(150); 11translate(-200, 200); 12box(150); 13

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

カメラで設定できないなんてあるか? と気になって試してみたら、camera()はカメラの移動・回転のみで、カメラのパラメータに関してはfrustrum()で視錐台を設定できるんですね。
上下左右をずらせばスクリーンを並進できます。
https://processing.org/reference/frustum_.html
processing3D frustrum()

投稿2022/09/11 12:02

ikadzuchi

総合スコア3047

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TN8001

2022/09/11 13:31

> frustrum()で視錐台を設定できるんですね。 > 上下左右をずらせばスクリーンを並進できます。 はーーー フォローありがとうございます。3D関連は全くわからんのです^^; 勘で適当に質問コードに合わせてみましたが、こういうことでいいんでしょうか?(私の回答追記部分) もっとすっきりさせることは可能ですか?(引数すべて何ひとつ意味がわかってませんw
sakurairo

2022/09/11 15:28

frustrumでしたか、盲点でした。 こちらの方が良いですね。
ikadzuchi

2022/09/18 16:24

> TN8001さん すいません返答忘れてました。 > こういうことでいいんでしょうか? > もっとすっきりさせることは可能ですか? 残念ながら、私も今回初めて触ってリファレンスのサンプルコードを勘で書き換えただけなのでよくわかりません…。
guest

0

ikadzuchiさんの情報により追記
こう?

Processing

1void setup() { 2 size(800, 600, P3D); 3 noFill(); 4} 5 6void draw() { 7 background(204); 8 9 //perspective(); // reset 10 //if (mousePressed) { 11 // offset(-170, 0); 12 //} 13 offset(mouseX - width/2, mouseY - height/2); 14 15 translate(300, 200); 16 box(150); 17 translate(200, 200); 18 box(150); 19 translate(0, -200, -600); 20 box(150); 21 translate(-200, 200); 22 box(150); 23 24 //copy(0, 0, 800, 600, -170, 0, 800, 600); 25} 26 27void offset(float x, float y) { 28 float fov = PI / 3; 29 float cameraZ = height / 2f / tan(fov / 2); 30 float aspect = width / float(height); 31 float ymax = cameraZ / 10 * tan(fov / 2); 32 float ymin = -ymax; 33 float xmin = ymin * aspect; 34 float xmax = ymax * aspect; 35 x /= 10; 36 y /= 10; 37 frustum(-x + xmin, -x + xmax, y + ymin, y + ymax, cameraZ / 10, cameraZ * 10); 38}

Frustum doc doesn't tell default values · Issue #1450 · processing/processing
アプリ動画


カメラはそういうものだと思うので、cameraでどうこうするのは無理じゃないですかね?

やるとしたらcopyでずらすか、
copy() / Reference / Processing.org

Processing

1size(800, 600, P3D); 2noFill(); 3 4translate(300, 200); 5box(150); 6translate(200, 200); 7box(150); 8translate(0, -200, -600); 9box(150); 10translate(-200, 200); 11box(150); 12 13//copy(170, 0, 800, 600, 0, 0, 800, 600); 14copy(0, 0, 800, 600, -170, 0, 800, 600);

PGraphicsに描いてずらすかですかね?

Processing

1size(800, 600, P3D); 2 3PGraphics pg = createGraphics(800, 600, P3D); 4pg.beginDraw(); 5pg.noFill(); 6pg.background(204); 7 8pg.translate(300, 200); 9pg.box(150); 10pg.translate(200, 200); 11pg.box(150); 12pg.translate(0, -200, -600); 13pg.box(150); 14pg.translate(-200, 200); 15pg.box(150); 16pg.endDraw(); 17 18image(pg, -170, 0);

ビュー?を複数持つつもりなら、peasycamを使うと楽かもしれません。
peasycam/MultiView_Offscreen.pde at master · jdf/peasycam

投稿2022/09/10 16:14

編集2023/08/16 09:41
TN8001

総合スコア9242

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sakurairo

2022/09/11 01:58

PGraphicsは処理が重くて悩んでいたのですが、copyなら許容範囲内ですね。 解決しました、ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問