2012-04-17 3 views
2

Я работаю над 3D-сценой в Java, используя API обработки. Это алгоритм компоновки графиков с применением силы (хотя это не слишком важно). У меня есть весь графический чертеж - узлы, ребра, макет и т. Д. Выглядят хорошо. Однако каждый узел на графике имеет метку, и я хотел бы иметь возможность отображать указанную метку как текст рядом с узлом. Я пробовал работать с функцией text(), но пока кажется, что мой код просто не работает. Я не вижу никакого текста на сцене.Рисование 3D-текста в обработке

Мой код выглядит следующим образом:

pushMatrix(); 
translate(width/2, height/2, 0); // put 0,0,0 at the center of the screen 
text("foo!", 20, 20, 20); 
popMatrix(); 

И я не вижу ничего. Просто график. Так что я пропущу?

ответ

0

Все в порядке с небольшим количеством кода, отображаемого вами. Вы можете увидеть измененную версию под управлением here:

void setup() { 
    size(400,400,P3D);  
    textSize(20); 
} 

void draw() { 
    background(0); 
    translate(width * .5, height*.5,0); 
    rotateY(map(mouseX,0,width,-PI,PI)); 
    rotateX(map(mouseY,0,height,-PI,PI)); 
    pushMatrix(); 
    text("foo!", -20, 0, 20); 
    popMatrix(); 
} 

Там может быть что-то еще по пути. Хотите поделиться дополнительной информацией?

+0

Оказывается, я пытался создать шрифт, используя CreateFont метод() этого не было - он терпел неудачу молча и просто не рисовал никакого текста, я думаю. Благодаря! – Peter

0

Цвет заливки управляет цветом текста и по умолчанию является белым. Поэтому, если вы рисуете белый текст на белом фоне, он не появится. Добавить заполнение (0); прежде чем вы нарисуете текст.

Также помните, что фигуры, нарисованные после отправки текста на экран, могут переписать ваш текст. Последний «скрытый» оператор в розыгрыше - это рисовать экран.

Вот пример рисования ряд вертикальных линий (в 2D) с рядом лейблов на вершине:

int startX; 

    void setup() { 
     size(400,400); 
     textSize(12); 
     startX = width/10; 
    } 

    void draw() { 
     background(255); 
     int curX = startX; 
     fill(0);   // Set the text color 
     while (curX < width) 
     { 
     line(curX, 30, curX, height-10); 
     text(curX, curX-(curX/20), 20); 
     curX += width/10; 
     } 
    } // end draw 
Смежные вопросы