実際に私はArduino Neopixelのファンであり、球形POVを実行しようとしました。 POVを実行するには、各イメージを各回転で使用される行数に変換する必要があります。私はplannerを変換すると思います。POVは、ピクセルベースの行をjavaベースで処理するために難しくはありません。球形のイメージをイメージラインに変換しました。私は本当にどんなコメントでもお礼を言います。3D画像マッピングのための処理を使用して
答えて
Processingエディタには、テクスチャイメージを球にマップするサンプルが付属しています。これは、球を三角形に分割し、texture()
とvertex()
関数を使用してテクスチャ付き球を描画することで行います。うまくいけば、これは良いスタートですが、より一般的に
/**
* Texture Sphere
* by Gillian Ramsay
*
* Rewritten by Gillian Ramsay to better display the poles.
* Previous version by Mike 'Flux' Chang (and cleaned up by Aaron Koblin).
* Original based on code by Toxi.
*
* A 3D textured sphere with simple rotation control.
*/
int ptsW, ptsH;
PImage img;
int numPointsW;
int numPointsH_2pi;
int numPointsH;
float[] coorX;
float[] coorY;
float[] coorZ;
float[] multXZ;
void setup() {
size(640, 360, P3D);
background(0);
noStroke();
img=loadImage("world32k.jpg");
ptsW=30;
ptsH=30;
// Parameters below are the number of vertices around the width and height
initializeSphere(ptsW, ptsH);
}
// Use arrow keys to change detail settings
void keyPressed() {
if (keyCode == ENTER) saveFrame();
if (keyCode == UP) ptsH++;
if (keyCode == DOWN) ptsH--;
if (keyCode == LEFT) ptsW--;
if (keyCode == RIGHT) ptsW++;
if (ptsW == 0) ptsW = 1;
if (ptsH == 0) ptsH = 2;
// Parameters below are the number of vertices around the width and height
initializeSphere(ptsW, ptsH);
}
void draw() {
background(0);
camera(width/2+map(mouseX, 0, width, -2*width, 2*width),
height/2+map(mouseY, 0, height, -height, height),
height/2/tan(PI*30.0/180.0),
width, height/2.0, 0,
0, 1, 0);
pushMatrix();
translate(width/2, height/2, 0);
textureSphere(200, 200, 200, img);
popMatrix();
}
void initializeSphere(int numPtsW, int numPtsH_2pi) {
// The number of points around the width and height
numPointsW=numPtsW+1;
numPointsH_2pi=numPtsH_2pi; // How many actual pts around the sphere (not just from top to bottom)
numPointsH=ceil((float)numPointsH_2pi/2)+1; // How many pts from top to bottom (abs(....) b/c of the possibility of an odd numPointsH_2pi)
coorX=new float[numPointsW]; // All the x-coor in a horizontal circle radius 1
coorY=new float[numPointsH]; // All the y-coor in a vertical circle radius 1
coorZ=new float[numPointsW]; // All the z-coor in a horizontal circle radius 1
multXZ=new float[numPointsH]; // The radius of each horizontal circle (that you will multiply with coorX and coorZ)
for (int i=0; i<numPointsW ;i++) { // For all the points around the width
float thetaW=i*2*PI/(numPointsW-1);
coorX[i]=sin(thetaW);
coorZ[i]=cos(thetaW);
}
for (int i=0; i<numPointsH; i++) { // For all points from top to bottom
if (int(numPointsH_2pi/2) != (float)numPointsH_2pi/2 && i==numPointsH-1) { // If the numPointsH_2pi is odd and it is at the last pt
float thetaH=(i-1)*2*PI/(numPointsH_2pi);
coorY[i]=cos(PI+thetaH);
multXZ[i]=0;
}
else {
//The numPointsH_2pi and 2 below allows there to be a flat bottom if the numPointsH is odd
float thetaH=i*2*PI/(numPointsH_2pi);
//PI+ below makes the top always the point instead of the bottom.
coorY[i]=cos(PI+thetaH);
multXZ[i]=sin(thetaH);
}
}
}
void textureSphere(float rx, float ry, float rz, PImage t) {
// These are so we can map certain parts of the image on to the shape
float changeU=t.width/(float)(numPointsW-1);
float changeV=t.height/(float)(numPointsH-1);
float u=0; // Width variable for the texture
float v=0; // Height variable for the texture
beginShape(TRIANGLE_STRIP);
texture(t);
for (int i=0; i<(numPointsH-1); i++) { // For all the rings but top and bottom
// Goes into the array here instead of loop to save time
float coory=coorY[i];
float cooryPlus=coorY[i+1];
float multxz=multXZ[i];
float multxzPlus=multXZ[i+1];
for (int j=0; j<numPointsW; j++) { // For all the pts in the ring
normal(-coorX[j]*multxz, -coory, -coorZ[j]*multxz);
vertex(coorX[j]*multxz*rx, coory*ry, coorZ[j]*multxz*rz, u, v);
normal(-coorX[j]*multxzPlus, -cooryPlus, -coorZ[j]*multxzPlus);
vertex(coorX[j]*multxzPlus*rx, cooryPlus*ry, coorZ[j]*multxzPlus*rz, u, v+changeV);
u+=changeU;
}
v+=changeV;
u=0;
}
endShape();
}
:
あなたがここにFile > Examples > Topics > Textures > TextureSphere
に行くことによって処理エディタからコードを取得することができますが、コードのスタックオーバーフローISN私はこのタイプの質問をどのように行うのですか?それは具体的に設計されたものです。「私はXを試しましたが、Yは期待されましたが、代わりにZがあります。試したことは何でも投稿できますか?あなたのMinimal, Complete, and Verifiable exampleはどこですか?
開始方法がわからない場合は、小さくしてください。画像を長方形にマッピングできますか?もしあなたが立ち往生したら、そこからあなたのやり方で仕事をしてください。がんばろう。
本当に感謝@ケビン、また私は処理中にあなたのメモを持っている、実際には私はここで初心者であり、どのようにチケットを開いて、どのように応答することを認識していない、特定のトピック –
@ Hamidskそれは本当にスタックオーバーフローの仕組みではありません。あなたはそれらに質問へのリンクをメールで送ることができますが、スタックオーバーフローを介してメッセージを送信することについて話しているのであれば、それは実際には行われません。 –
- 1. C#3D画像処理
- 2. MATLABR2010aを使用した画像処理
- 3. ガボールフィルタを使用した画像処理
- 4. MATLABを使用した画像処理
- 5. リアルタイム画像処理のためにファントム2を使用
- 6. Hadoop MapReduceを使用して3D画像を処理する方法は?
- 7. 画像処理のためのHttpハンドラ
- 8. leptonica(反転カラーテキスト)を使用したOCRの画像処理
- 9. Tensorflowを使用した非画像データセットのバッチ処理
- 10. AFinを使用したKinectビデオのC#画像処理
- 11. 画像処理のためのアンドロイド用ライブラリ
- 12. CarrierWaveを使用して画像をコピーして処理する
- 13. エラー処理と欠落した画像のためのHttpModule
- 14. 画像処理ライブラリをバインドした後にビジュアルスタジオのxamarinを使用して、バインディングライブラリ
- 15. OpenCVとAVFoundationフレームワークを使用したiPhoneリアルタイム画像処理?
- 16. Pythonを使用したデジタル画像処理
- 17. JavaScriptを使用した画像処理フィルタ
- 18. OpenGLグラフィックスでOpenCVを使用した画像処理
- 19. 画像処理アプリのためのギャラリーの画像のサイズ変更。 android
- 20. 画像処理用PCA
- 21. Android用画像処理ライブラリ
- 22. 画像処理はC++を使用しています
- 23. ミニ画像を使って画像を作る(処理)
- 24. 画像処理
- 25. 画像URLを取得するためのGoogleフォトリファレンスの処理
- 26. オブジェクトステータスを取得するためのiOSでの画像処理
- 27. 画像処理のための任意のJavaScriptライブラリ
- 28. 医療画像処理のための最良のプログラミング言語
- 29. 画像処理のためのPHPで動作しているのpython
- 30. バックグラウンド処理のためにUIImagePickerControllerから画像データを渡す
クロスポスト間をリンクしてください:https://forum.processing.org/two/discussion/18313/using-processing-for-3d-image-mapping –
スタックオーバーフローは実際には一般的には設計されていません "どうすればいいですか?この "タイプの質問。それは具体的に設計されたものです。「私はXを試しましたが、Yは期待されましたが、代わりにZがあります。試したことは何でも投稿できますか?あなたの[mcve]はどこですか?どのように起動するのか分からない場合は、小さくしてください:画像を長方形にマッピングできますか?もしあなたが立ち往生したら、そこからあなたのやり方で仕事をしてください。がんばろう。 –