Plane の回転の中心
こんにゃくのり  2015/11/28(Sat) 00:51
Plane の左辺を軸に回転させようと center を操作してみたのですが
期待通りにはなりませんでした。
どのようにすればよいでしょうか。

# include <Siv3D.hpp>

void Main() {
Camera mycam;
mycam.pos.set(0, 0, 0);
mycam.lookat.set(0, 0, 1);
Graphics3D::SetCamera(mycam);

Plane p({ 0, 0, 2 }, 1, 1);
p.center.x = -0.5;

double r = 0;

while (System::Update()){
p.rollPitchYaw(r,-Pi/2,0).draw();
r += 0.1;
}
}

簡便な方法がないのであれば頑張って計算します。
記事編集
Reputeless  2015/11/28(Sat) 23:30
Plane や Box, Sphere などの形状型は行列を持たないため、座標変換の自由度が高くありません。
asMesh() で Mesh 型に変換してから .translated() や .rotated() で移動や回転を適用してください。

# include <Siv3D.hpp>

void Main()
{
Plane plane(5);
Box box(0, 0, 0, 5, 0.1, 5);
double r = 0;

while (System::Update())
{
Graphics3D::FreeCamera();

Sphere(0.2).draw(Palette::Red);

plane.asMesh()
.translated(2.5, 0, 0)
.rotated(-Pi / 2, 0, r)
.draw();

box.asMesh()
.translated(2.5, 0, 0)
.rotated(-Pi / 2, 0, r + Pi)
.draw();

r += 0.05;
}
}

なお、Siv3D の次期バージョンからは Plane の裏面も描画されるようになります。
編集
こんにゃくのり  2015/11/29(Sun) 07:00
ありがとうございました。
編集
件名
Re: Plane の回転の中心
名前
コメント
画像添付


投稿修正キー (投稿を修正する時に使います)
画像認証 (右画像の数字を入力) 投稿キー

- WEB PATIO -