Проблемы при одновременном запуске библиотеки oscp5 и средства визуализации P3D при обработке 3.x

Я попытался сопоставить данные с внешних устройств, чтобы нарисовать шаблоны. Но библиотека 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


person Lam Ko    schedule 23.11.2018    source источник
comment
Не могли бы вы опубликовать минимально воспроизводимый пример, демонстрирующий проблему?   -  person Kevin Workman    schedule 23.11.2018
comment
Привет большое спасибо! Я только что добавил один пример кода.   -  person Lam Ko    schedule 23.11.2018
comment
@LamKo Это все еще происходит, если вы запускаете программное обеспечение, отправляющее данные на порт 60000 после запуска этого скетча? Не могли бы вы опубликовать минимальный пример отправки данных OSC? (При обработке 3.4 приведенный выше код выполняется без ошибок, если я не отправляю данные OSC)   -  person George Profenza    schedule 23.11.2018
comment
Я вставил свой ответ, большое спасибо!   -  person Lam Ko    schedule 25.11.2018


Ответы (1)


Я решил проблему. В моем исходном коде есть инициализация frameRate в setup() (минимальный пример показан ниже), я не понимал, что это вызвало проблему (потому что инициализация 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);
}

Надеюсь понятно объяснил. :)

person Lam Ko    schedule 25.11.2018