Рендеринг повернутых прямоугольников из box2dweb в pixi.js

Я пишу свой собственный рендерер для box2dweb и решил использовать pixi.js.

Я могу отображать прямоугольники, но только если они не повернуты - если они повернуты, анимация испорчена. Выглядит это так (один слева — отладочный рендерер от box2d, один справа — мой): http://scr.hu/0ozr/o552x

Я знаю, что мне нужно настроить опору для графического объекта в pixi, но я не знаю, как получить доступ к координатам точки, вокруг которой вращается поле из box2d.

Я думаю, мне нужно использовать контактное ограничение какой-то формы, но как мне получить к нему доступ?

Это часть кода, который создает графический объект pixi для многоугольника: (Мне нужно перевести все вершины в систему координат с началом в левом верхнем углу ограничивающей рамки многоугольника, потому что PIXI использует такую ​​систему координат).

getModel : function(body) {
  var that = this;

  var model = new PIXI.Graphics();
  model.beginFill(0xFFFFFF);
  var box = physHelpers.getBoundingBox(body);
  model.position.x = box.x * that.scale;
  model.position.y = box.y * that.scale;

  var vertices = physHelpers.getTranslatedVertices(body);
  model.moveTo(vertices[0].x * that.scale, vertices[0].y * that.scale);

  for(var i = 1 ; i < vertices.length ; i++){
    model.lineTo(vertices[i].x*that.scale, vertices[i].y*that.scale);
  }

  model.pivot = new PIXI.Point(box.width/2,model.height/2);
  model.rotation = body.GetBody().GetAngle();
  model.endFill();
  return model;
}

person Nebril    schedule 07.11.2013    source источник


Ответы (1)


Хорошо, я понял. Кажется, что PIXI изменяет точку, в которой он начинает рендеринг, когда вы меняете точку поворота (это повлияло на положение объекта даже без изменения поворота). Кроме того, вращение box2d вращается вокруг центра тела.

Итак, теперь я могу использовать положение тела box2d без перевода в верхний левый угол, чтобы начать рендеринг.

person Nebril    schedule 08.11.2013