Anatomography Web API サンプルコード - Perl - オートカメラ

はじめに

全身像を前後左右から描画します。

サンプルコード

出力先ファイルは適宜変更して下さい。

#!/usr/bin/env perl
use strict;
use LWP::UserAgent;

# リクエスト先URL
my $serverURL = "http://lifesciencedb.jp/bp3d/API/";

# 描画リクエスト用のJSON文字列を作成(正面)
my $jsonf = <<JSON;
{
	"Common": {
		"Version":"4.0",
		"TreeName":"partof"
	},
	"Camera": {
		"CameraMode":"front"
	},
	"Part":[
		{
			"PartName":"Human body"
		}
	]
}
JSON

# 出力(正面)
open OUT, ">autocamera_f.png";
binmode(OUT);
print OUT  &getImage($jsonf);	# 作成したJSONを利用して描画リクエスト
close OUT;

# 描画リクエスト用のJSON文字列を作成(左面)
my $jsonl = <<JSON;
{
	"Common": {
		"Version":"4.0",
		"TreeName":"partof"
	},
	"Camera": {
		"CameraMode":"left"
	},
	"Part":[
		{
			"PartName":"Human body"
		}
	]
}
JSON

# 出力(左面)
open OUT, ">autocamera_l.png";
binmode(OUT);
print OUT  &getImage($jsonl);	# 作成したJSONを利用して描画リクエスト
close OUT;

# 描画リクエスト用のJSON文字列を作成(背面)
my $jsonb = <<JSON;
{
	"Common": {
		"Version":"4.0",
		"TreeName":"partof"
	},
	"Camera": {
		"CameraMode":"back"
	},
	"Part":[
		{
			"PartName":"Human body"
		}
	]
}
JSON

# 出力(背面)
open OUT, ">autocamera_b.png";
binmode(OUT);
print OUT  &getImage($jsonb);	# 作成したJSONを利用して描画リクエスト
close OUT;

# 描画リクエスト用のJSON文字列を作成(右面)
my $jsonr = <<JSON;
{
	"Common": {
		"Version":"4.0",
		"TreeName":"partof"
	},
	"Camera": {
		"CameraMode":"right"
	},
	"Part":[
		{
			"PartName":"Human body"
		}
	]
}
JSON

# 出力(右面)
open OUT, ">autocamera_r.png";
binmode(OUT);
print OUT  &getImage($jsonr);	# 作成したJSONを利用して描画リクエスト
close OUT;

# 生成したJSONをパラメータとしてimageに対してGETリクエストするサブルーチン
sub getImage () {
	my $json = shift;
	my $userAgent = LWP::UserAgent->new;
	my $request = HTTP::Request->new('GET', $serverURL."image?".$json);
	my $response = $userAgent->request($request);
	return $response->content;
}

出力画像(正面)


出力画像(左面)


出力画像(背面)


出力画像(右面)

以下、各ステップに関する説明です。

カメラの設定

# 描画リクエスト用のJSON文字列を作成(正面)
my $jsonf = <<JSON;
{
	"Common": {
		"Version":"4.0",
		"TreeName":"partof"
	},
	"Camera": {
		"CameraMode":"front"
	},
	"Part":[
		{
			"PartName":"Human body"
		}
	]
}
JSON
カメラ設定項目の"CameraMode"を"front"に設定することで、正面から描画した画像を得られます。
同様に"left"にすることで、左側(人体にとっての左側ではなくBodyParts3dオブジェクトの左側)から描画した画像を得られます。
同様に"back"にすることで、背面から描画した画像を得られます。
同様に"right"にすることで、右側(人体にとっての右側ではなくBodyParts3dオブジェクトの右側)から描画した画像を得られます。