2016-06-14 3 views
0

Я работаю над Quad-copter и для тестирования. Я решил использовать Обработку, чтобы дать мне наглядный пример того, что микроконтроллер обрабатывает и вычисляет (и, возможно, некоторое моделирование алгоритма управления позже). Поэтому я сделал простую модель Quad-copter и показывал ее в правом верхнем углу экрана. В "положении покоя," Я хочу, чтобы идеальный вид сбоку Quad-вертолет, как это:Устранение углов обзора при обработке

enter image description here

Вместо этого, я получаю изображение, как это:

enter image description here

второе изображение было тогда, когда я отобразил Квадрат в верхнем правом углу, а первый - когда я отобразил его мертвую точку в окне.

Я понимаю, что здесь происходит, но я не знаю, как это исправить. Система рендеринга предполагает, что моя точка зрения находится на мертвой точке экрана, поэтому что-то вверху и справа от моей точки зрения видно из-под и спереди немного. Я ткнул на вкладку «Ссылка» на своем веб-сайте, и ничего похожего не делает именно то, что я хочу. Я бы подумал, что это будет решение, но я в настоящее время не могу его найти. Кто-нибудь знает, как это исправить? Благодарю.

+1

Можете ли вы предоставить [mcve], который демонстрирует проблему? Вы можете использовать простой куб вместо полной модели. –

ответ

1

Похоже, что вы можете найти функцию ortho(). Вы можете прочитать об этом в ссылке here.

Устанавливает орфографическую проекцию и определяет параллельный объем отсечения. Все объекты с одинаковым размером выглядят одинакового размера, независимо от того, находятся они рядом или находятся далеко от камеры.

Рассмотрим небольшой пример программы без вызова ortho() функции:

void setup(){ 
    size(500, 500, P3D); 
} 

void draw(){ 
    background(255); 
    translate(300, 100); 
    noFill(); 
    stroke(0); 
    box(100, 100, 100); 
} 

Теперь давайте добавим вызов к ortho() функции:

void setup(){ 
    size(500, 500, P3D); 
} 

void draw(){ 
    background(255); 
    translate(300, 100); 
    ortho(); 
    noFill(); 
    stroke(0); 
    box(100, 100, 100); 
} 

Теперь вы больше не видите «глубину» квадрата. Вы можете добавить параметры в функцию ortho(), чтобы сделать это именно так, как вы хотите, но это основы.

В качестве альтернативы вы можете сделать что-то вроде настройки вида, которое вы рисуете до середины, а затем нарисуйте этот вид в верхнем правом углу основного вида.