Dragon armor 67 #478642 Posted March 5, 2020 3 минуты назад, SkepticalFox сказал: https://github.com/zaki/irrlicht/blob/fd155bead0e24cc5018b9f4cee2d73c85b18badc/include/matrix4.h#L904 У меня исходник есть. Толку-то, если не понимаю, что там происходит. 3 минуты назад, SkepticalFox сказал: Тут еще scale передать можно, чего не передаешь? Единичку передать? Там именно такой коэффициент масштабирования передаётся. С вьювером-то проблем и нет. Проблема с физическим движком. Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #478643 Posted March 5, 2020 (edited) 2 minutes ago, Dragon armor said: Единичку передать? scene::IMeshSceneNode *node_fr = smgr->addMeshSceneNode(mesh_preloaded[index], NULL, i, matrix_p.getTranslation(), matrix_p.getRotationDegrees(), matrix_p.getScale()); Ну я про это Edited March 5, 2020 by SkepticalFox Quote Share this post Link to post Short link Share on other sites
Dragon armor 67 #478644 Posted March 5, 2020 1 час назад, SkepticalFox сказал: Ну я про это Да, тебя понял, поэтому и написал про единицу. Прототип функции virtual IMeshSceneNode* addMeshSceneNode(IMesh* mesh, ISceneNode* parent=0, s32 id=-1, const core::vector3df& position = core::vector3df(0,0,0), const core::vector3df& rotation = core::vector3df(0,0,0), const core::vector3df& scale = core::vector3df(1.0f, 1.0f, 1.0f), bool alsoAddIfMeshPointerZero=false) = 0; Коэффициент масштабирования единица по умолчанию. С вьювером всё нормально. Или ты про то, что надо добавить масштабирование? Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #478645 Posted March 5, 2020 1 minute ago, Dragon armor said: Коэффициент масштабирования единица по умолчанию А зачем тебе эта единица, когда у тебя в matrix_p есть scale -> matrix_p.getScale() Quote Share this post Link to post Short link Share on other sites
Dragon armor 67 #478646 Posted March 5, 2020 Не, без него нормально получается. Только что, SkepticalFox сказал: А зачем тебе эта единица, когда у тебя в matrix_p есть scale -> matrix_p.getScale() Да зачем? Это для вьювера. В нём всё хорошо получается. И с масштабом в физическом движке так же всё верно. Неправильно получается вращение и, возможно, позиционирование. Но оно, более-менее совпадает. А почему один объект лежит на боку? А забор повёрнут, но не на боку? Но камни нормально лежат. А дома нет. И то, не все дома, а только часть. Почему так избирательно? Это очередная мелкая проблема, решение которой на поверхности. Но его надо найти. А для этого надо понять, что не так. Или брутфорсить правильный вариант, как с ландшафтом было. Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #478647 Posted March 5, 2020 (edited) 1 hour ago, Dragon armor said: Почему в визуализаторе правильная ориентация, не требуется менять X на Z? Возможно твой визуализатор работает с форматом DX, а движок с форматом OpenGL https://docs.microsoft.com/en-us/windows/win32/direct3d9/coordinate-systems?redirectedfrom=MSDN 11 minutes ago, Dragon armor said: Или брутфорсить правильный вариант, как с ландшафтом было. Кстати, а что с ним было?) heights.png вроде ни разу не менялся Edited March 5, 2020 by SkepticalFox Quote Share this post Link to post Short link Share on other sites
Dragon armor 67 #478649 Posted March 5, 2020 9 минут назад, SkepticalFox сказал: Возможно твой визуализатор работает с форматом DX, а движок с форматом OpenGL Визуализатор может и с OpenGL, и с DirectX работать. У меня выбран первый вариант. А вот физический движок не зависит от системы координат. Там можно как угодно делать. 11 минут назад, SkepticalFox сказал: Кстати, а что с ним было?) heights.png вроде ни разу не менялся Сейчас покажу, если один-в-один выводить. Каждая часть получается повёрнута на 90º. Поэтому при позиционировании мне пришлось поменять оси XZ местами. Похоже, что в физическом движке и в игре ландшафт создаётся с разного угла. Или хз как это работает. Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #478651 Posted March 5, 2020 15 minutes ago, Dragon armor said: Или хз как это работает. ну так я же тебе ссылки кинул - в DirectX и OpenGL разные координатные системы 16 minutes ago, Dragon armor said: Визуализатор может и с OpenGL, и с DirectX работать это еще как? бэкэнды должны абстрагироваться от данных, и скорее всего данные ему нужны в формате DX, раз матрицы и вершины из игры без изменений принимает Quote Share this post Link to post Short link Share on other sites
Dragon armor 67 #478652 Posted March 5, 2020 3 минуты назад, SkepticalFox сказал: ну так я же тебе ссылки кинул - в DirectX и OpenGL разные координатные системы Да, видел. Пытаюсь осилить. И всё-равно не понимаю, что не так. Вот первый объект. Его матрица. -0.24207699 0.072136000 0.073537000 0.00000000 0.073381998 0.25256500 -0.0061869998 0.00000000 -0.072293997 0.014819000 -0.25251999 0.00000000 -505.10995 57.825890 303.23520 1.0000000 Нижняя строка явно позиция. Да, мне пришлось поменять её, чтобы позиционирование заработало. А что ещё менять? И как? Ни opengl, ни dx тут ни при чём. Это надо, значит, с физическим движком разбираться. И физическому движку без разницы, левосторонняя или правосторонняя система координат. Но вот у меня не получается никак понять, что не так. И, опять же, почему какие-то объекты лежат на боку, а другие повёрнуты? Сделал ровно ни черта, падающих домов уже нет. Вот как это работает? Что произошло? Просто тупо без какой-то надежды matrix_p.setRotationDegrees(matrix_p.getRotationDegrees()); И уже только неправильно ориентированы по оси Z (или Y, что там вверх направлено в физдвижке). Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #478655 Posted March 5, 2020 (edited) 32 minutes ago, Dragon armor said: И уже только неправильно ориентированы по оси Z (или Y, что там вверх направлено в физдвижке). Ибо надо по рукам бить за memcpy в объект класса ) Шучу конечно Вообще я не понял, что там заработало и что ты там поменял в матрице Edited March 5, 2020 by SkepticalFox Quote Share this post Link to post Short link Share on other sites
Dragon armor 67 #478681 Posted March 6, 2020 10 часов назад, SkepticalFox сказал: Ибо надо по рукам бить за memcpy в объект класса ) Да там метод такой есть, что позволяет таким образом делать. 10 часов назад, SkepticalFox сказал: Вообще я не понял, что там заработало и что ты там поменял в матрице Не заработало пока что. 3D мне даётся ну очень тяжко. Не понимаю многих вещей. По какой-то причине, если применить последовательно вызовы setRotationDegrees(getRotationDegrees) для той же матрицы, ориентация становится правильной. Но позиция при этом становится неправильная, а точнее, она зеркальная. Просто поменять знак осей - не вариант, потому что получается фигня. Если точнее, то зеркально получается по диагонали. Quote Share this post Link to post Short link Share on other sites
Dragon armor 67 #478812 Posted March 8, 2020 В физический движок запихивать деревья в том виде, в каком они есть - это, всё-таки, не дело. Но в качестве пробы сойдёт. Даже самый зоркий глаз не заметит подвоха. Зачем два файла speedtree? spt - зачем нужен? Он в движке используется? Вся геометрия в ctree же. Как понимаю, мне нужен именно второй. Его, собственно, и использовал. Точнее, ctree создаётся из spt. А в spt, как понимаю, прописаны дополнительные параметры, такие как влияние ветра на ветки. Где прописаны коэффициенты маскировки кустов? Помню, что когда-то находил. Хотя и не уверен. Где прописано поведение растительности? А именно, что может сломаться, а что нет (куст, трава). А то тут проблема вырисовывается. 2+ млн полигонов в физическом движке. Испытать бы его как-то, а то может разочаровать низкой производительностью. Это беда-печаль будет. Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #478814 Posted March 8, 2020 32 минуты назад, Dragon armor сказал: Где прописаны коэффициенты маскировки кустов? О я тоже присоединяюсь к вопросу, а то всё хочу поглядеть на них. Quote Share this post Link to post Short link Share on other sites
DrWeb7_1 181 #478815 Posted March 8, 2020 8 минут назад, StranikS_Scan сказал: О я тоже присоединяюсь к вопросу, а то всё хочу поглядеть на них. [stupid_me]А не могут ли быть они прописаны на стороне сервера?[/stupid_me] Quote Share this post Link to post Short link Share on other sites
Dragon armor 67 #478816 Posted March 8, 2020 @StranikS_Scan @DrWeb7_1 Как-то рановато вопрос подобный задал. Но, даже если на стороне сервера, ничего не мешает сделать свои коэффициенты. Quote Share this post Link to post Short link Share on other sites
DrWeb7_1 181 #478818 Posted March 8, 2020 (edited) 3 минуты назад, Dragon armor сказал: Но, даже если на стороне сервера, ничего не мешает сделать свои коэффициенты. Насколько я помню, для деревьев действует упрощенная модель, где маскирует не сама крона, а то, что представляет из себя дерево в виде хитбоксов. Если грубо выражаться, то "палка с помятым шариком/консуом". Edited March 8, 2020 by DrWeb7_1 Quote Share this post Link to post Short link Share on other sites
Dragon armor 67 #478821 Posted March 8, 2020 @DrWeb7_1 Листва маскирует. И у дерева, и у куста. Тут не важно, что за растительность. Вот только голые ветки тоже коэффициент маскировки дают, хоть и небольшой. Тут уже не уверен, хотя возможно, что в модели коллизии какие-то листья тоже есть. Quote Share this post Link to post Short link Share on other sites
DrWeb7_1 181 #478822 Posted March 8, 2020 Только что, Dragon armor сказал: Листва маскирует. И у дерева, и у куста. Надо мне освежить память. Quote Share this post Link to post Short link Share on other sites
Dragon armor 67 #478828 Posted March 8, 2020 Цитата Деревья. density - плотность листвы, влияет на видимость Из файла destructibles.xml. А вот где найти, разрушается ли дерево или нет? Есть только косвенный признак - количество здоровья у кустов и травы равно 3. У остальных заметно выше. Можно пока что и такое предположение оставить. Всё-равно до реализации видимости ещё очень долго. Quote Share this post Link to post Short link Share on other sites
Slava7572 1,685 #478829 Posted March 8, 2020 2 часа назад, Dragon armor сказал: Где прописаны коэффициенты маскировки кустов? я когда то долго и нудно искал в клиенте,но нашел только в инете на каком то форуме и то они их тестили сами и исходя из результатов таблицу составили по каждой карте(почти по каждой,давно это было и некоторые карты совсем свежие были на тот момент),25%,50% и 75%....жаль забыл что за форум,да и карты уже перепиливали не раз и вообще сама система маскировки изменилась кардинально....в общем,скорее всего 1 час назад, DrWeb7_1 сказал: они прописаны на стороне сервера хотя я бы не отказался от модика,который показывает коэффициенты/нулевые(неработающие)/дырявые кустики/деревья....пусть даже примитивной миникарты с процентами Quote Share this post Link to post Short link Share on other sites