1

我试图从外部设备映射数据以绘制图案。但是 oscP5 库和 P3D 渲染器在处理 3.3.7 和 3.4 时不能一起工作,而它们可以单独工作。它们可以处理 2.2.1 但 2.2.1 不支持声音库。有谁知道如何解决它?

import oscP5.*;
OscP5 oscP5;

float value;

void setup(){
size(400, 400, P3D);
rectMode(CENTER);
oscP5 = new OscP5(this, 60000);
}

void oscEvent(OscMessage theOscMessage){
  if (theOscMessage.checkAddrPattern("/ATT")){
    value = theOscMessage.get(0).floatValue();
  }
}

void draw(){
  background(0);
  noStroke();
  fill(255);
  float r = second()/10;
  rotateZ(r);
  rect(width/2, height/2, value, value);
}

oscP5和P3D一起工作时的错误

4

1 回答 1

1

我解决了这个问题。在我的原始代码中, setup() 中有一个 frameRate 初始化(如下所示的最小示例),我没有意识到是它导致了问题(因为 frameRate 初始化在分别与 oscP5 或 P3D 一起使用时不会导致错误)所以我没有写在我的问题中。现在我删除了 frameRate 初始化行(frameRate(30)),然后 oscP5 和 P3D 最终可以一起工作(即使我仍然很困惑,但它不会影响我当前的工作)。

import oscP5.*;
OscP5 oscP5;

float value;

void setup(){
size(400, 400, P3D);
// the following line causes the error when oscP5 and P3D attempt to work together,
// but the code works when there is either oscP5 and P3D, oscP5 and frameRate or P3D and frameRate.
frameRate(30);
rectMode(CENTER);
oscP5 = new OscP5(this, 60000);
}

void oscEvent(OscMessage theOscMessage){
  if (theOscMessage.checkAddrPattern("/ATT")){
  value = theOscMessage.get(0).floatValue();
  }
}

void draw(){
  background(0);
  noStroke();
  fill(255);
  float r = second()/10;
  rotateZ(r);
  rect(width/2, height/2, value, value);
}

希望我解释清楚。:)

于 2018-11-25T03:16:13.327 回答