Cocos2d. Диффузное изображение (60 кадров в секунду) - PullRequest
3 голосов
/ 08 августа 2011

Игра создана при поддержке cocos2d 0.99.5 и Box2d.Iphone SDK 4.3

У нас есть персонаж.Когда персонаж движется быстро, он выглядит размытым (нечеткий // не сфокусированный).На симуляторе и на устройстве (iPhone 3G).

Для перемещения персонажа используется mouseJoint (dampingRatio = 0 //HzHz = -1).

На скриншоте изображение четко. ссылка

Персонаж сфокусирован.На скриншоте не передаются проблемы.

Все время 60 кадров в секунду.

Пробные параметры:

  • use kCCDirectorProjection2D // 3D

  • alies // antialies к параметрам текстуры

  • CC_COCOSNODE_RENDER_SUBPIXEL 1 и 0

Пример видео: ссылка

Как получить четкое изображение персонажа во время движения?

Ответы [ 2 ]

3 голосов
/ 09 ноября 2012

У меня тоже была такая проблема, и я исправил ее, изменив эту строку в ccConfig.h:

<code>#define CC_FIX_ARTIFACTS_BY_STRECHING_TEXEL 0

на

<code>#define CC_FIX_ARTIFACTS_BY_STRECHING_TEXEL 1

Это комментарий к этому определению, может быть, он кому-нибудь поможет.</p> <pre><code> /** @def CC_FIX_ARTIFACTS_BY_STRECHING_TEXEL If enabled, the texture coordinates will be calculated by using this formula: - texCoord.left = (rect.origin.x*2+1) / (texture.wide*2); - texCoord.right = texCoord.left + (rect.size.width*2-2)/(texture.wide*2); The same for bottom and top. This formula prevents artifacts by using 99% of the texture. The "correct" way to prevent artifacts is by using the spritesheet-artifact-fixer.py or a similar tool. Affected nodes: - CCSprite / CCSpriteBatchNode and subclasses: CCLabelBMFont, CCTMXTiledMap - CCLabelAtlas - CCQuadParticleSystem - CCTileMap To enabled set it to 1. Disabled by default. @since v0.99.5 */

1 голос
/ 09 августа 2011

Я почти уверен, что то, что вы описываете, является обманом зрения.ЖК-дисплеи, особенно низкокачественные, имеют конечное время отклика .Если это время отклика слишком медленное, это может привести к появлению двоений, то есть движущийся объект выглядит размытым.В основном происходит то, что пиксели предыдущего кадра (или нескольких кадров) на самом деле "выключаются" очень долго, и вы видите более слабые версии вашего спрайта, оставленные позади при его движении.

Что касается вашего комментария:

Для эксперимента я взял карандаш и положил его, чтобы лист бумаги начал быстро двигаться.Глаза видят карандаш в фокусе, тогда проблема не в оптическом эффекте, а в проблемах с кодом

Смотреть на движущийся объект в реальном мире - это не то же самое, что смотреть на движущийся объект на экране,с или без плохого времени отклика дисплея.Реальный объект движется непрерывно, но экранный объект движется дискретными шагами.Ваш глаз может точно следовать карандашу и сохранять четкость изображения на сетчатке.Однако если вы следуете за изображением на экране, ваш глаз плавно движется, а изображение на экране «прыгает» с места на место.Это может вызвать эффект «дрожания» для достаточно быстро движущихся объектов даже при высокой частоте кадров.Если скорость 60 кадров в секунду все еще дрожит, то в принципе нет пути к этому;это ограничение современной технологии.

...