インターラクティブな3D画像を配布する

  • 3Dのオブジェクトは言葉で説明しても、2次元プロットを駆使しても、なかなか伝わらない
  • 3Dのアニメーションにしてもよいけれど、やはりインターラクティブな操作が可能な方法に比べると劣る
  • RではrglパッケージにwriteWebGL(),browseURL()というのがあって、これはブラウザでのそれを可能にするWebGLという仕様に乗せた出力をする関数
  • これにより、ブラウザ表示とブラウザ用ファイルの作成(配布)を可能にしてくれる
  • browseURL()を使って、立ち上げたところ


library(rgl)
# ドーナツ(トーラス)
t <- seq(from=0,to=100,length=1000)
r1 <- 1
r2 <- 0.3
k1 <- 1
k2 <- exp(1)
x <- cos(k1*t) * (r1 + r2 * cos(k2*t))
y <- sin(k1*t) * (r1 + r2 * cos(k2*t))
z <- r2 * sin(k2*t)
xyz <- cbind(x,y,z)
standard.3d <- function(x){
	d <- length(x[1,])
	x <- rbind(x,rep(min(x),d))
	x <- rbind(x,rep(max(x),d))
	x
}
xyz. <- standard.3d(xyz)
plot3d(xyz.,type="l")
# 自身のPCのテンポラリディレクトリに作ってブラウザで開いてみる
browseURL(paste("file://", writeWebGL(dir=file.path(tempdir(), "webGL"), width=500), sep=""))
# 作業ディレクトリに hogeというディレクトリを作って、その中にファイル一式を作る
my.dir <- "hoge"
writeWebGL(dir=file.path(".",my.dir),width=500)