Sidebar

Xash3D ModelViewer (a part of P2:Savior tools)

  • Наступило лето и у нас стартовал конкурс с призовым фондом в $120!
    "De-Make It!" Summer Contest.
Команда форума
VIP
28.03.2010
15 328
253
83
Награды
4
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
Xash3D ModelViewer (a part of P2:Savior tools)

Актуальная версия моего просмотровщика моделей, замена Jeds HLMV и HLMV 1.25. С историей разработки можно ознакомиться, начав вот с этой темы. Предидущая версия доступна здесь. Для тех кому не хочется всё это читать, перечислю здесь основные отличия от Jeds и новые возможности.

Описание
1. Поддержка высокополигональных моделей, от которых другие вьюверы просто вылетают с ошибкой.
2. Исправлены ошибки как оригинального просмотровщика, так и Jeds HLMV
3. Визуализация ходьбы монстров через текстуру floor.bmp (входит в комплект поставки)
4. Визуализация нормалей модели.
5. Автоматические определение вьюмоделей и переключение их отображения на вид от первого лица, а так же коррекция FOV для моделей из P2:Savior.
6. Поддержка инверсной кинематики, JiggleBones и развесовки на моделях (доступно в P2:Savior и XashXT).
7. Возможность изменять цвет remap-текстур для моделей и тестировать правильность их работы.
8. Встроенный редактор, позволяющий настроить положение eye position, центра модели, хитбоксов, аттачментов, задать bbox и clipbox.
9. Возможность менять атрибуты текстур в модели и сохранять их.
10. Редактор глобальных флагов с подробным описанием (обычно это эффекты унаследованные из первого Quake, но в голдсорсе и Xash3D они тоже работают).
11. Поддержка блендинга анимаций, 2-way, 3-way, 4-way, 9-way. Вы можете менять значения блендеров на лету и смотреть как это выглядит.
12. Возможность показа развертки, импорта и экспорта UV-мапы, аналогично Jeds HLMV
13. Все настройки редактора теперь сохраняются в реестр, больше не надо их прописывать заново каждый раз.
14. При выборе той или иной комбинации бодигрупп, напротив вкладки будет просчитано число, которое надо ввести в поле "body" у энтити, чтобы получить искомую комбинацию для env_model или env_static. Удобная мелочь.
15. Исправленное зеркальное отражение модели.
16. Включённый MSAA для окошка просмотровщика.
17. Плавный переход между анимациями при их смене (как и в игре).
18. Возможность отобразить вьюмодель слева (например для CS).
19. Автоподстройка зуума и дистанции в зависимости от размера модели. Теперь на гигантских скайбоксах скорость навигации и зуума точно такая же, как и на моделях стандартного размера, а текстура пола поможет визуально привязаться к масштабу модели.
20. Визуализация развесовки костей по вертексам.
21. При проигрывании анимации стрельбы рисуются вспышки выстрелов. Это удобно для настройки их визуального положения.

Отличия от предидущей версии:
- исправлен баг с ползунками прозрачности и скейла текстуры
- несколько мелких исправлений в редакторе

Update at: 23.01.2018
- Исправлен баг с хромом на моделях
- Исправлен порядок следования параметров $origin в редакторе QC.
- Добавлена возможность навигации по моделям в папке (стрелки влево\вправо).
- Запоминание свёрнутого\развернутого окна (возможно глючное на данный момент).

Update at: 24.01.2018
- Исправлен баг в навигации, когда в списке попадались файлы секвенций и текстуры моделей.
- Отключён принудительный сброс камеры при навигации по моделям стрелочками. Если не понравится - верну как было.

Update at: 24.01.2018
- Добавлен прицел в режиме показа оружия от первого лица
- Включён обратно сброс камеры при смене модели стрелками
- Добавлена перезагрузка модели по F5

Update at: 16.04.2018
- Исправлены некоторые баги с управлением бонеконтроллерами
- Исправлен баг с прозрачностью (приведён в соответствие с JEDS)
- Исправлены некоторые подписи с кнопкам
- Мультисэмплинг отключён для wireframe рендеринга (хитбоксы, аттачменты, нормали итп).

Update at: 17.05.2018
- Добавлена совместная работа с q1mv (Quake 1 ModelViewer)

Актуальная версия находится в аттаче. Задавайте вопросы или присылайте багрепорты в рамках этой темы.
 

Вложения

Последнее редактирование:

Chyvachok

New member
24.01.2012
56
0
0
Награды
0
Дядя Миша сказал(а):
а так же коррекция FOV для моделей из P2:Savior.
Интересно, а как Вьювер определяет откуда модель и меняет FOV? И можно ли самому переключить FOV? К примеру не только в P2:Savior но и в КсашХТ тоже можно другой viewmodel FOV поставить.
 

JPEG

Active member
02.10.2013
930
35
28
Награды
0
26
www.youtube.com
Из предложений: переключение веапон оригина галкой не очень удобное, лучше как в Джеде сделать отдельной вкладкой
 
Команда форума
VIP
28.03.2010
15 328
253
83
Награды
4
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
2 Chyvachok: по актам анимаций. Они есть только у параноевских вьюмоделей.
2 qpAHToMAS: ДА НЕ КАК!!!!111 :taz:
2 Yo Den: тебе и всем остальным: кому нравится випон оригин отдельной вкладкой - сидите и дальше на Jeds.

[ADDED=Дядя Миша]1516264756[/ADDED]
PS. Переключать випон оригин можно горячей клавишей v, в меню лезть необязательно
 
Последнее редактирование:

nemyax

тндайпц тра
Команда форума
Модератор
30.07.2015
643
24
18
Награды
0
2 Дядя Миша:
Есть хотелка насчёт проигрывания секвенций: не хватает индикации скорости, и стало быть нельзя вернуть точно на 1.0. Ты мог бы добавить текстбокс? Если он ещё и задавать скорость будет, то вообще шик.
И туда же — если мотать слайдер колесом мышы, то он ездиет, а скорость не меняется.
 

qpAHToMAS

Well-known member
22.10.2006
9 305
76
48
Награды
3
28
Russian Far East
  • Золотая медаль 152
  • Серебряная медаль 136
  • Золотая медаль 221
Дядя Миша сказал(а):
2 qpAHToMAS: ДА НЕ КАК!!!!111 :taz:
Это очень плохо.
HLMV часто используют для скрининга моделей с последующей заменой Background Color'а на прозрачный фон, а со сглаживанием это становится труднее.
Другое дело, если бы Make Screenshot умела сохранять в PNG с альфа-каналом.

[ADDED=qpAHToMAS]1516273677[/ADDED]
Полупрозрачные текстуры пропадают, если менять прозрачность модели (<25%):

 
Последнее редактирование:
Команда форума
VIP
28.03.2010
15 328
253
83
Награды
4
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
2 qpAHToMAS: серый цвет и так интерпретируется как прозрачный для определённых режимов смешивания.
 

JPEG

Active member
02.10.2013
930
35
28
Награды
0
26
www.youtube.com
декомпильнул
Код:
/*
==============================================================================

QC script generated by Half-Life MDL Decompiler 1.2 
2003, Kratisto. Based on code from Valve's HL SDK.

zombie.mdl

Original internal name:
"zombie.mdl"

==============================================================================
*/

$modelname "zombie.mdl"
$cd ".\"
$cdtexture ".\"
$scale 1.0
$cliptotextures


$bbox 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
$cbox 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
$eyeposition 0.000000 0.000000 72.000000


//reference mesh(es)
$bodygroup "zombieRECB"
{
studio "Dismembered"
studio "half"
studio "Dismembered2"
}

$bodygroup "head"
{
studio "gone_head"
studio "cut_throat"
studio "broken_neck"
blank
}

$bodygroup "rleg"
{
studio "gone_rleg"
blank
}

$bodygroup "lleg"
{
studio "gone_lleg"
blank
}

$bodygroup "chest"
{
studio "gone_torso"
blank
}

$bodygroup "rarm"
{
studio "gone_rarm"
blank
}

$bodygroup "larm"
{
studio "gone_larm"
blank
}

$bodygroup "cap"
{
blank
studio "cop_cap"
}

$texrendermode "flesh_string.bmp" "masked" 

// 6 skin families
$texturegroup skinfamilies 
{
{ "zombie_test.bmp" }
{ "zombie_test2.bmp" }
{ "zombie_test3.bmp" }
{ "zombie_test4.bmp" }
{ "zombie_test5.bmp" }
{ "zombie_test6.bmp" }
}

// 4 attachment(s)
$attachment 0 "Bip01 Head" 4.000000 0.000000 0.000000
$attachment 1 "Bip01 R Calf" 0.000000 0.000000 0.000000
$attachment 2 "Bip01 L Calf" 0.000000 0.000000 0.000000
$attachment 3 "Bip01 Spine2" 0.000000 0.000000 0.000000

// 1 bone controller(s)
$controller 0 "Bip01 Head" XR -60.000000 60.000000

// 19 hit box(es)
$hbox 6 "Bip01 L Thigh" 0.000000 -5.690000 -3.550000 18.709999 3.610000 3.430000
$hbox 6 "Bip01 L Calf" 0.000000 -3.770000 -2.970000 16.959999 2.210000 2.410000
$hbox 6 "Bip01 L Foot" -0.070000 -2.290000 -3.140000 3.620000 8.170000 1.450000
$hbox 7 "Bip01 R Thigh" 0.000000 -5.960000 -3.770000 18.639999 3.580000 3.390000
$hbox 7 "Bip01 R Calf" 0.000000 -3.850000 -2.580000 16.969999 2.160000 2.980000
$hbox 7 "Bip01 R Foot" -0.110000 -2.290000 -1.380000 3.610000 8.170000 2.990000
$hbox 3 "Bip01 Pelvis" -6.670000 -4.400000 -6.460000 5.120000 5.170000 6.830000
$hbox 3 "Bip01 Spine" 0.000000 -3.290000 -6.830000 5.320000 5.000000 6.910000
$hbox 2 "Bip01 Spine1" 0.000000 -3.900000 -6.200000 5.700000 5.670000 5.910000
$hbox 2 "Bip01 Spine2" 0.000000 -3.650000 -5.970000 8.990000 4.930000 5.440000
$hbox 4 "Bip01 L UpperArm" 0.000000 -3.170000 -1.870000 5.470000 2.950000 1.580000
$hbox 4 "Bip01 L Forearm" 0.000000 -3.400000 -1.950000 10.950000 2.060000 2.460000
$hbox 4 "Bip01 L UpperArm" 0.000000 -2.880000 -2.280000 11.550000 2.100000 1.700000
$hbox 4 "Bip01 L Hand" 0.000000 -1.640000 -1.960000 6.120000 1.790000 1.770000
$hbox 5 "Bip01 R UpperArm" 0.000000 -3.080000 -1.440000 5.890000 2.970000 2.450000
$hbox 5 "Bip01 R Forearm" 0.000000 -3.350000 -2.710000 10.920000 2.400000 2.110000
$hbox 5 "Bip01 R UpperArm" 0.000000 -2.950000 -1.970000 11.250000 2.220000 2.450000
$hbox 5 "Bip01 R Hand" 0.000000 -1.850000 -1.770000 5.930000 1.590000 2.080000
$hbox 1 "Bip01 Head" -1.000000 -3.960000 -3.860000 8.020000 5.230000 4.070000

// 43 animation sequence(s)
$sequence "idle1" "idle1" fps 24 loop ACT_IDLE 1 
$sequence "walk" "walk" LX fps 16 loop ACT_WALK 15 { event 1004 0 "zombie/footstep2.wav" } { event 1004 8 "zombie/footstep2.wav" } 
$sequence "walk2" "walk2" LX fps 16 loop ACT_WALK 9 { event 1004 0 "zombie/footstep2.wav" } { event 1004 8 "zombie/footstep2.wav" } 
$sequence "walk3" "walk3" LX fps 16 loop ACT_WALK 1 { event 1004 0 "zombie/footstep2.wav" } { event 1004 8 "zombie/footstep2.wav" } 
$sequence "walk4" "walk4" LX fps 16 loop ACT_WALK 1 { event 1004 0 "zombie/footstep2.wav" } { event 1004 8 "zombie/footstep2.wav" } 
$sequence "walk5" "walk5" LX fps 16 loop ACT_WALK 1 { event 1004 0 "zombie/footstep2.wav" } { event 1004 8 "zombie/footstep2.wav" } 
$sequence "dieheadshot" "dieheadshot" X fps 30 ACT_DIE_HEADSHOT 1 { event 1004 19 "zombie/zom_bodyfall2.wav" } 
$sequence "dieheadshot2" "dieheadshot2" fps 24 ACT_DIE_GUTSHOT 1 { event 1004 25 "zombie/zom_knee.wav" } { event 1004 33 "zombie/zom_bodyfall.wav" } 
$sequence "diesimple_1" "diesimple_1" X fps 24 ACT_DIESIMPLE 1 { event 1004 15 "zombie/zom_bodyfall2.wav" } 
$sequence "diesimple_2" "diesimple_2" X fps 24 ACT_DIEBACKWARD 1 { event 1004 15 "zombie/zom_bodyfall.wav" } 
$sequence "diesimple_3" "diesimple_3" fps 24 ACT_DIEVIOLENT 1 { event 1004 15 "zombie/zom_bodyfall2.wav" } 
$sequence "diesimple_4" "diesimple_4" fps 24 ACT_DIE_CHESTSHOT 1 { event 1004 15 "zombie/zom_bodyfall2.wav" } 
$sequence "diesimple_5" "diesimple_5" fps 24 ACT_DIE_BACKSHOT 1 { event 1004 15 "zombie/zom_bodyfall2.wav" } 
$sequence "dieforward" "dieforward" X fps 24 ACT_DIEFORWARD 1 { event 1004 15 "zombie/zom_bodyfall.wav" } 
$sequence "flinch" "flinch" fps 62 ACT_SMALL_FLINCH 1 
$sequence "attack2" "attack2" fps 30 ACT_MELEE_ATTACK1 1 {
  { event 1 10 } 
  { event 1 28 } 
  { event 1 59 } 
 }
$sequence "vomit" "vomit" fps 30 ACT_MELEE_ATTACK2 5 { event 3 10 } 
$sequence "from_eat" "from_eat" fps 25 ACT_STAND 1 
$sequence "to_eat" "to_eat" fps 25 ACT_CROUCH 1 
$sequence "eating" "eating" fps 14 loop ACT_EAT 1 {
  { event 1004 7 "zombie/bite1.wav" } 
  { event 1004 15 "zombie/bite2.wav" } 
  { event 1004 26 "zombie/bite1.wav" } 
  { event 1004 38 "zombie/bite1.wav" } 
  { event 1004 46 "zombie/bite2.wav" } 
  { event 1004 57 "zombie/bite1.wav" } 
 }
$sequence "lunge_1" "lunge_1" fps 25 
$sequence "knocked_to_floor" "knocked_to_floor" fps 30 ACT_FALL 1 
$sequence "on_floor" "on_floor" fps 2 ACT_SLEEP 1 
$sequence "lunge_2" "lunge_2" fps 25 
$sequence "floor_getup" "floor_getup" fps 25 ACT_HOP 1 
$sequence "floor_death" "floor_death" fps 25 
$sequence "floor_attack" "floor_attack" fps 25 
$sequence "zombie_deadsit" "zombie_deadsit" fps 7 
$sequence "zombie_deadstand" "zombie_deadstand" fps 12 
$sequence "tug_fence" "tug_fence" fps 30 {
  { event 1004 2 "mapspecific/coldblood/zombie_bang_fence.wav" } 
  { event 1004 25 "mapspecific/coldblood/zombie_bang_fence.wav" } 
  { event 1004 40 "mapspecific/coldblood/zombie_bang_fence.wav" } 
 }
$sequence "suicide_attack" "suicide_attack" fps 30 {
  { event 1004 10 "zombie/bite2.wav " } 
  { event 1004 28 "zombie/bite2.wav" } 
  { event 1004 59 "zombie/bite1.wav" } 
 }
$sequence "suicide_eat" "suicide_eat" fps 14 {
  { event 1004 38 "zombie/bite1.wav" } 
  { event 1004 46 "zombie/bite2.wav" } 
  { event 1004 57 "zombie/bite1.wav" } 
  { event 1004 69 "zombie/bite1.wav" } 
  { event 1004 77 "zombie/bite2.wav" } 
  { event 1004 88 "zombie/bite1.wav" } 
  { event 1004 131 "zombie/bite1.wav" } 
  { event 1004 139 "zombie/bite2.wav" } 
  { event 1004 150 "zombie/bite1.wav" } 
  { event 1004 154 "zombie/bite1.wav" } 
  { event 1004 154 "zombie/bite2.wav" } 
  { event 1004 154 "zombie/bite1.wav" } 
 }
$sequence "legless_fall" "legless_fall" fps 25 
$sequence "legless_idle" "legless_idle" fps 24 loop ACT_CROUCHIDLE 50 
$sequence "crawl_1" "crawl_1" LX fps 30 loop ACT_WALK_HURT 1 { event 1004 6 "zombie/zom_crawl_leftarm.wav" } { event 1004 12 "zombie/zom_crawl_rightarm.wav" } 
$sequence "crawl_2" "crawl_2" LX fps 30 loop ACT_RUN_HURT 1 { event 1004 6 "zombie/zom_crawl_leftarm.wav" } { event 1004 12 "zombie/zom_crawl_rightarm.wav" } 
$sequence "crawl_die" "crawl_die" X fps 30 ACT_DIE_BACKSHOT 1 
$sequence "crawl_attack" "crawl_attack" fps 20 ACT_SPECIAL_ATTACK1 5 { event 1 16 } 
$sequence "slit_throat" "slit_throat" fps 24 
$sequence "getup" "getup" fps 18 ACT_77 1 
$sequence "hit_locker" "hit_locker" fps 24 
$sequence "through_bars" "through_bars" fps 55 
$sequence "cscene_subway_eaten" "cscene_subway_eaten" fps 30 

// End of QC script.
 
Команда форума
VIP
28.03.2010
15 328
253
83
Награды
4
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
Вoт эта строчка виновата:
Код:
$sequence "getup" "getup" fps 18 ACT_77 1
ACT_77 и выше - это акты вьюмодели из паранои, вот оно и получается. Убери этот ACT, он всё равно не нужен.
 

Ghoul [bb]

Быдлокодер
07.06.2014
73
4
8
Награды
0
Москаль
Баг редактора:

В режиме редактора смещаем модель по одной из осей, выглядит так:


Потом в QC прописываем его:
$origin 3 0 0

Компилим и получаем вот что:



Далее, путём уже ручного подбора, устанавливаем правильный параметр:
$origin 0 -3 0. Вот теперь получается как и планировали. Но уже с совершенно иной осью и знаком.
 
Команда форума
VIP
28.03.2010
15 328
253
83
Награды
4
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
2 Ghoul [bb]: проверь и все остальные параметры тогда. Всё сразу исправлю.
 

ncuxonaT

Well-known member
05.05.2013
1 172
42
48
Награды
0
2 Дядя Миша: если всё равно будешь делать апдейт, можешь сделать, чтобы окно запоминало размер и позицию (сложный вариант) или создавалось развернутым (простой вариант)? Не верю, что кто-то смотрит модели в этом маленьком окошке.
 

Донат - Операционные расходы

Итого
1 191.00 $
Цель
1 300.00 $
Донат завершается:

Доноры Красавчики

Новые сообщения

Пользователи онлайн