동일한 처리 스케치에서 Box2D 및 비디오 사용 문제

엠마

Box2D for Processing 및 Video 라이브러리로 스케치를 만들려고합니다.
몇 개의 상자가 움직이고 서로 충돌하고 있습니다.이 상자를 비디오로 텍스처링하고 싶습니다.
그러나 사용하려는 비디오 파일을 처리하는 코드 줄을 입력하자마자 긴 오류 메시지가 표시됩니다.

import processing.video.*;
import shiffman.box2d.*;
import org.jbox2d.collision.shapes.*;
import org.jbox2d.common.*;
import org.jbox2d.dynamics.*;


Box2DProcessing box2d;

int no_boxes = 7;

//All of our boxes
Box[] boxes = new Box[no_boxes];

//Boundry sides
Boundry[] boundry = new Boundry[4];

float angle = -PI/2;
float grav_rad = 30;

float boundr = 260;
float boundw = 30;

PVector direction = new PVector();

Movie mouth;


void setup() {
  size(800,800,P3D);
  frameRate(60);
  colorMode(HSB,360,100,100);
  noStroke();

  //Load the movie
  mouth = new Movie(this,"mouth1.mov");
  mouth.play();

  // Initialize box2d physics and create the world
  box2d = new Box2DProcessing(this);
  box2d.createWorld();

  //Create the boxes
  for (int n=0;n<no_boxes; n++) {
    boxes[n] = new Box(random(200,600), random (200,600));
  }

  //Create the boundries
  boundry[0] = new Boundry(400+boundr,400,boundw,2*boundr+boundw);
  boundry[1] = new Boundry(400-boundr,400,boundw,2*boundr+boundw);
  boundry[2] = new Boundry(400,400+boundr,2*boundr+boundw, boundw);
  boundry[3] = new Boundry(400,400-boundr,2*boundr+boundw, boundw);



}

void movieEvent (Movie m) {
  m.read();
}


void draw() {

  background(200,50,80);
  image(mouth,0,0);

  angle+= radians(0.3);

  direction.x = grav_rad*cos(angle);
  direction.y = grav_rad*sin(angle);

  box2d.setGravity(-direction.x, direction.y);

  camera(width/2.0, height/2.0, (height/2.0) / tan(PI*30.0 / 180.0), width/2.0, height/2.0, 0, 0-map(direction.x,-10,10,-1,1), 0-map(direction.y,-10,10,-1,1), 0);   //x, y, z -> need to change between x and y

  box2d.step();

  // Display all the boxes
  for (Box b: boxes) {
    b.display();
  }

  //display the boundries
  boundry[0].display();
  boundry[1].display();
  boundry[2].display();
  boundry[3].display();

}

내가 얻는 오류 메시지는 다음과 같습니다.

finishLifecycleAction (com.jogamp.opengl.util.FPSAnimator $ 3) : ++++++ 시간 초과 도달 ++++++ main-FPSAWTAnimator # 00-Timer0
finishLifecycleAction (com.jogamp.opengl.util.FPSAnimator $ 3) : 확인 false- pollPeriod 6, 블로킹 true-> res false, 기다린 1002/1000-main-FPSAWTAnimator # 00-Timer0
-com.jogamp.opengl.util.FPSAnimator [started true, animating true, paused false, drawable 1, totals [dt 0, 프레임 0, fps 0.0], modeBits 1, init'ed true, animThread Thread [main-FPSAWTAnimator # 00-Timer0-FPSAWTAnimator # 00-Timer1,5, ​​main], exclCtxThread false (null)]
[2] : com .jogamp.opengl.util.AnimatorBase.finishLifecycleAction (AnimatorBase.java:634)
[3] : com.jogamp.opengl.util.FPSAnimator.stop (FPSAnimator.java:326)
[4] : processing.opengl.PSurfaceJOGL.stopThread (PSurfaceJOGL.java:722)
[5] : processing.core.PApplet.dispose (PApplet.java:3830)
[6] : processing.core.PApplet.die (PApplet.java:3741)
[7] : processing.core.PApplet.die (PApplet. java : 3751)
[8] : processing.video.Movie.initGStreamer (알 수없는 소스)
[9] : processing.video.Movie. (알 수없는 소스)
[10] : Rotating_mouth_boxes_100620.setup (Rotating_mouth_boxes_100620.java:58)
[11] : processing.core.PApplet.handleDraw (PApplet.java:2432)
[12] : processing.opengl.PSurfaceJOGL $ DrawListener.display (PSurfaceJOGL.java:866)
[13] : jogamp.opengl.GLDrawableHelper.displayImpl (GLDrawableHelper.java : 692)
[14] : jogamp.opengl.GLDrawableHelper.display (GLDrawableHelper.java:674)
[15] : jogamp.opengl.GLAutoDrawableBase $ 2.run (GLAutoDrawableBase.java:443)
[16] : jogamp.opengl.GLDrawableHelper.invokeGLImpl (GLDrawableHelper.java:1293)
[17] : jogamp.opengl.GLDrawableHelper.invokeGL (GLDrawableHelper.java:1147)
[18] : com.jogamp.newt.opengl.GLWindow. display (GLWindow.java:782)
[19] : com.jogamp.opengl.util.AWTAnimatorImpl.display (AWTAnimatorImpl.java:81)
[20] : com.jogamp.opengl.util.AnimatorBase.display (AnimatorBase.java : 453)
[21] : com.jogamp.opengl.util.FPSAnimator $ MainTask.run (FPSAnimator.java:178)
[22] : java.util.TimerThread.mainLoop (Timer.java:555)
[23] : java. util.TimerThread.run (Timer.java:505)

어떤 아이디어? Box2D와 비디오를 별도로 성공적으로 사용했지만 동일한 스케치에 두는 것이 문제인 것 같습니다.

조지 프로 펜자

저는 100 %는 아니지만 P3D(OpenGL) 렌더러가 시간 프레임 내에 초기화를 완료해야하고 시간이 너무 오래 지연되어 시간이 초과되는 것 같습니다.

영화를로드하는 장면이 문제가 될 수 있습니다.

기본 소프트웨어 렌더러를 사용할 수 있다면 시도해보십시오.

size(800,800,JAVA2D);

제거하고 camera(). 바라건대 이것은 시각적으로 여전히 괜찮습니다.

지금은 깨끗한 해결책을 생각할 수 없습니다.

다른 해결 방법은 P3D렌더러가 준비된 후 나중에 동영상을 초기화하는 것 입니다. 예를 들어 추가 부울 변수를 사용하여 영화로드가 한 번만 발생하도록 트리거되었는지 추적 할 수 있습니다.

다음은 (예상되지 않은) 예제입니다. 주석이 해결 방법을 설명하기를 바랍니다.

import processing.video.*;
import shiffman.box2d.*;
import org.jbox2d.collision.shapes.*;
import org.jbox2d.common.*;
import org.jbox2d.dynamics.*;


Box2DProcessing box2d;

int no_boxes = 7;

//All of our boxes
Box[] boxes = new Box[no_boxes];

//Boundry sides
Boundry[] boundry = new Boundry[4];

float angle = -PI/2;
float grav_rad = 30;

float boundr = 260;
float boundw = 30;

PVector direction = new PVector();

Movie mouth;

// keep track if movie load was called
boolean wasMovieLoadCalled = false;

void setup() {
  size(800,800,P3D);
  frameRate(60);
  colorMode(HSB,360,100,100);
  noStroke();

  // Initialize box2d physics and create the world
  box2d = new Box2DProcessing(this);
  box2d.createWorld();

  //Create the boxes
  for (int n=0;n<no_boxes; n++) {
    boxes[n] = new Box(random(200,600), random (200,600));
  }

  //Create the boundries
  boundry[0] = new Boundry(400+boundr,400,boundw,2*boundr+boundw);
  boundry[1] = new Boundry(400-boundr,400,boundw,2*boundr+boundw);
  boundry[2] = new Boundry(400,400+boundr,2*boundr+boundw, boundw);
  boundry[3] = new Boundry(400,400-boundr,2*boundr+boundw, boundw);

}

void movieEvent (Movie m) {
  m.read();
}


void draw() {
  // if load wasn't called
  if(wasMovieLoadCalled == false){

    //Load the movie
    mouth = new Movie(this,"mouth1.mov");
    mouth.play();

    // update the variable so load happens only once
    wasMovieLoadCalled = true;

  }

  background(200,50,80);

  // ensure the movie is loaded before trying to display it
  if(mouth != null){
    image(mouth,0,0);
  }


  angle+= radians(0.3);

  direction.x = grav_rad*cos(angle);
  direction.y = grav_rad*sin(angle);

  box2d.setGravity(-direction.x, direction.y);

  camera(width/2.0, height/2.0, (height/2.0) / tan(PI*30.0 / 180.0), width/2.0, height/2.0, 0, 0-map(direction.x,-10,10,-1,1), 0-map(direction.y,-10,10,-1,1), 0);   //x, y, z -> need to change between x and y

  box2d.step();

  // Display all the boxes
  for (Box b: boxes) {
    b.display();
  }

  //display the boundries
  boundry[0].display();
  boundry[1].display();
  boundry[2].display();
  boundry[3].display();

}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

동일한 CodeIgniter 2.x 애플리케이션에서 여러 데이터베이스 사용 및 URI 라우팅 문제

분류에서Dev

Crafty.js 및 Box2d를 사용하여 간단한 원 그리기

분류에서Dev

box2d에서 동적 발사체 곡선 그리기

분류에서Dev

동일한 쿼리 내에서 OR 및 AND를 사용하는 쿼리 문제

분류에서Dev

b2FixtureDef.shape.SetAsArray가있는 Box2D 본문이 테트리스와 유사한 모양에서 작동하지 않음

분류에서Dev

Libgdx 및 Box2D 사용자 정의 모양 그리기

분류에서Dev

Parse를 사용한 비동기 처리에 문제가 있습니다.

분류에서Dev

ffmpeg 및 / 또는 Python을 사용한 2 패스 일괄 비디오 인코딩

분류에서Dev

VBA를 사용하여 텍스트 파일 읽기 및 처리 문제

분류에서Dev

VIPER 및 서비스를 사용한 신속한 처리 오류 책임

분류에서Dev

AWS를 사용한 비디오 처리

분류에서Dev

오디오와 비디오의 볼륨 제어 및 FFMpeg를 사용하여 특정 기간 동안 만 루프로 비디오에 짧은 오디오 추가

분류에서Dev

하위 경로, Angular2 및 Express에 대한 라우팅 문제, 하위 디렉터리 서비스 제공

분류에서Dev

MP4Box (MPEG DASH)를 사용하여 생성 된 다양한 오디오 및 비디오 세그먼트에 대한 단일 매니페스트 파일

분류에서Dev

비동기 node.js 함수를 사용한 제어 흐름 및 오류 처리

분류에서Dev

동일한 쿼리에서 구별 및 제한을 사용하는 MongoDB 쿼리

분류에서Dev

c # uwp : 사용 가능한 각 논리 CPU에서 webview 탐색 및 캡처를 디스패치합니다.

분류에서Dev

클라이언트 측 리소스 소비 및 지연 시간을 최소화하기 위해 대용량 오디오 파일을 제공, 스트리밍 및 소비하는 기본 아키텍처

분류에서Dev

아틀라스 파일 및 SpriteKit을 사용한 배치 그리기 문제

분류에서Dev

StereoTool을 사용하여 Liquidsoap에서 오디오를 처리하려는 문제

분류에서Dev

3.0과 호환되지 않는 1.5.1에서 사용 된 비디오 라이브러리 및 코드 처리

분류에서Dev

Processing 및 box2d를 사용하여 단일 웨이브 만들기

분류에서Dev

캡처 한 사진 및 비디오, iOS에서 오디오를 표시하고 재생하는 방법

분류에서Dev

RTSP 스팀을 소스로 사용하는 Kurento one2many webRTC 비디오 스트리밍 문제

분류에서Dev

텍스처 Libgdx로 채워진 Box2d 바디

분류에서Dev

find -exec 사용 및 표준 오류 리디렉션에 문제가 있음

분류에서Dev

Microsoft Media Foundation 및 Desktop Duplication API를 사용한 비디오 제작

분류에서Dev

Netbeans를 사용하여 JAR 파일에서 P3D 처리 스케치 실행

분류에서Dev

WCF 서비스 및 클라이언트 응용 프로그램을 사용한 오류 처리

Related 관련 기사

  1. 1

    동일한 CodeIgniter 2.x 애플리케이션에서 여러 데이터베이스 사용 및 URI 라우팅 문제

  2. 2

    Crafty.js 및 Box2d를 사용하여 간단한 원 그리기

  3. 3

    box2d에서 동적 발사체 곡선 그리기

  4. 4

    동일한 쿼리 내에서 OR 및 AND를 사용하는 쿼리 문제

  5. 5

    b2FixtureDef.shape.SetAsArray가있는 Box2D 본문이 테트리스와 유사한 모양에서 작동하지 않음

  6. 6

    Libgdx 및 Box2D 사용자 정의 모양 그리기

  7. 7

    Parse를 사용한 비동기 처리에 문제가 있습니다.

  8. 8

    ffmpeg 및 / 또는 Python을 사용한 2 패스 일괄 비디오 인코딩

  9. 9

    VBA를 사용하여 텍스트 파일 읽기 및 처리 문제

  10. 10

    VIPER 및 서비스를 사용한 신속한 처리 오류 책임

  11. 11

    AWS를 사용한 비디오 처리

  12. 12

    오디오와 비디오의 볼륨 제어 및 FFMpeg를 사용하여 특정 기간 동안 만 루프로 비디오에 짧은 오디오 추가

  13. 13

    하위 경로, Angular2 및 Express에 대한 라우팅 문제, 하위 디렉터리 서비스 제공

  14. 14

    MP4Box (MPEG DASH)를 사용하여 생성 된 다양한 오디오 및 비디오 세그먼트에 대한 단일 매니페스트 파일

  15. 15

    비동기 node.js 함수를 사용한 제어 흐름 및 오류 처리

  16. 16

    동일한 쿼리에서 구별 및 제한을 사용하는 MongoDB 쿼리

  17. 17

    c # uwp : 사용 가능한 각 논리 CPU에서 webview 탐색 및 캡처를 디스패치합니다.

  18. 18

    클라이언트 측 리소스 소비 및 지연 시간을 최소화하기 위해 대용량 오디오 파일을 제공, 스트리밍 및 소비하는 기본 아키텍처

  19. 19

    아틀라스 파일 및 SpriteKit을 사용한 배치 그리기 문제

  20. 20

    StereoTool을 사용하여 Liquidsoap에서 오디오를 처리하려는 문제

  21. 21

    3.0과 호환되지 않는 1.5.1에서 사용 된 비디오 라이브러리 및 코드 처리

  22. 22

    Processing 및 box2d를 사용하여 단일 웨이브 만들기

  23. 23

    캡처 한 사진 및 비디오, iOS에서 오디오를 표시하고 재생하는 방법

  24. 24

    RTSP 스팀을 소스로 사용하는 Kurento one2many webRTC 비디오 스트리밍 문제

  25. 25

    텍스처 Libgdx로 채워진 Box2d 바디

  26. 26

    find -exec 사용 및 표준 오류 리디렉션에 문제가 있음

  27. 27

    Microsoft Media Foundation 및 Desktop Duplication API를 사용한 비디오 제작

  28. 28

    Netbeans를 사용하여 JAR 파일에서 P3D 처리 스케치 실행

  29. 29

    WCF 서비스 및 클라이언트 응용 프로그램을 사용한 오류 처리

뜨겁다태그

보관