forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Xors3D (http://forum.boolean.name/forumdisplay.php?f=126)
-   -   Вопросы про Xors3D (http://forum.boolean.name/showthread.php?t=15605)

SBJoker 06.12.2011 10:35

Ответ: Вопросы про Xors3D
 
ИМХО, тут человечки к кораблю как капсуль к тримешу. Корабль к локации как компаунд к тримешу. Вот и все дела.

Crystal 06.12.2011 11:07

Ответ: Вопросы про Xors3D
 
Цитата:

Сообщение от SBJoker (Сообщение 212641)
ИМХО, тут человечки к кораблю как капсуль к тримешу. Корабль к локации как компаунд к тримешу. Вот и все дела.

То есть ты предлагаешь внутренности сделать тримешем,
а наружности компаундом?

SBJoker 06.12.2011 11:53

Ответ: Вопросы про Xors3D
 
Я предлагаю сделать так как делают всегда и везде. Один и тот же объект для разных целей представлен разным физическим объёмом. Для каких то операция типа попаданий при стрельбе, сойдёт простая физ. модель, например шар.

Для хождения по кораблю он уже тримеш. Для контактирования с уровнем - компаунд общей формы.
Все варианты физического тела не контактируют друг с другом. Жеско связаны по соподчинению. Т.е. положение в пространтстве оределяется компаундом для коллизий с уровнем. Тримеш для хождения по кораблю подчинен компаунду. Действие на тримеш неприводит к изменению положения корабля. Он лишь используется для столкновений с игроками внутри.

В целом ясно?

Crystal 06.12.2011 12:35

Ответ: Вопросы про Xors3D
 
Цитата:

Сообщение от SBJoker (Сообщение 212651)
Я предлагаю сделать так как делают всегда и везде. Один и тот же объект для разных целей представлен разным физическим объёмом. Для каких то операция типа попаданий при стрельбе, сойдёт простая физ. модель, например шар.

Для хождения по кораблю он уже тримеш. Для контактирования с уровнем - компаунд общей формы.
Все варианты физического тела не контактируют друг с другом. Жеско связаны по соподчинению. Т.е. положение в пространтстве оределяется компаундом для коллизий с уровнем. Тримеш для хождения по кораблю подчинен компаунду. Действие на тримеш неприводит к изменению положения корабля. Он лишь используется для столкновений с игроками внутри.

В целом ясно?

Сложно, ёмко, долго.
И ведь кораблей таких должен быть далеко не один...

SBJoker 06.12.2011 12:44

Ответ: Вопросы про Xors3D
 
Ну что тут сказать, загрузить одной командой мир второй игрока, и сказать что сделал игру - несложно. А для настоящей игры, увы надо много думать и работать.

Crystal 06.12.2011 12:55

Ответ: Вопросы про Xors3D
 
Цитата:

Сообщение от SBJoker (Сообщение 212659)
Ну что тут сказать, загрузить одной командой мир второй игрока, и сказать что сделал игру - несложно. А для настоящей игры, увы надо много думать и работать.

Не ну всё равно, тримеш-тримеш избавило бы от тонны кода имхо.
С компаундом тут мучиться долго придётся, не 3D тетрис же.

Nuprahtor 06.12.2011 13:14

Ответ: Вопросы про Xors3D
 
Даже в современных движках для этого дела используется заранее приготовленные менее детализированные примитивы, а вы хотите на блице просчитывать физику по мешу вот такой модели:

?

Crystal 06.12.2011 13:17

Ответ: Вопросы про Xors3D
 
Цитата:

Сообщение от Nuprahtor (Сообщение 212663)
Даже в современных движках для этого дела используется заранее приготовленные менее детализированные примитивы, а вы хотите на блице просчитывать физику по мешу вот такой модели:

?

10к полигонов, чё не так?
Я думаю для техники главного героя можно и больше, этш не бот.

HolyDel 06.12.2011 15:41

Ответ: Вопросы про Xors3D
 
тогда жди квантовых компьютеров. чтобы считать честный тримеш-тримеш :)

Crystal 06.12.2011 15:58

Ответ: Вопросы про Xors3D
 
Цитата:

Сообщение от HolyDel (Сообщение 212711)
тогда жди квантовых компьютеров. чтобы считать честный тримеш-тримеш :)

Ты считаешь что на 10к полигонов тримеша нужен суперкомпьютер?

Randomize 06.12.2011 17:09

Ответ: Вопросы про Xors3D
 
Цитата:

Сообщение от CrystalDev (Сообщение 212715)
Ты считаешь что на 10к полигонов тримеша нужен суперкомпьютер?

Иди и почитай как работает солвер физики как и что в нём вычисляется. Вопросы ты задаёшь глупые очень. Физ-движки это не казуальная панацея от всех бед которая должна с пол пинка за тебя всё делать. Это инструмент которым надо уметь пользоваться. К слову большинство игр при симуляции физики не используют тримеши и хуллы вообще! Как тебе такое?

HolyDel 06.12.2011 17:57

Ответ: Вопросы про Xors3D
 
10к х 10к это 100кк довольно нетривиальных операций над трисами. можно конечно оптимизировать, но не частный случай. хорс мультимедийный движок, а не игровой.
для хулла это будет ну максимум 100 х 10к это всего 1кк. есть разница?

.Squid 06.12.2011 18:03

Ответ: Вопросы про Xors3D
 
Тримеши для статики - ок. Для динамики - вафли производительности.
Не смотря на все оптимизации, посчитать столкновение двух динамических тримешей по 10К треугольников - это нетривиальная задача (а их ведь не два будет). Это в принципе не уровень современных игр и тем более не уровень бесплатного физического движка, встроенного в стодолларовый игровой движок.

Crystal 06.12.2011 20:16

Ответ: Вопросы про Xors3D
 
Цитата:

Сообщение от .Squid (Сообщение 212743)
Тримеши для статики - ок. Для динамики - вафли производительности.
Не смотря на все оптимизации, посчитать столкновение двух динамических тримешей по 10К треугольников - это нетривиальная задача (а их ведь не два будет). Это в принципе не уровень современных игр и тем более не уровень бесплатного физического движка, встроенного в стодолларовый игровой движок.

Тримеш хотелось бы использовать только для техники ГГ.
Вся остальная техника стандартная, кубы, хуллы, капсулы.

Ладно, попробую позже редактор компаундов сделать под физикс для корабля.
Мехи у меня будут на капсулах, вот как этот первый старый говённый тестовый вариант:
http://www.youtube.com/watch?v=K9oXJ25Ekfo

moka 06.12.2011 20:45

Ответ: Вопросы про Xors3D
 
Ужасно. Да и зачем делать такие видео, где 5% информации, а остальное нудная хрень?

Crystal 06.12.2011 21:15

Ответ: Вопросы про Xors3D
 
Цитата:

Сообщение от MoKa (Сообщение 212760)
Ужасно. Да и зачем делать такие видео, где 5% информации, а остальное нудная хрень?

А чё ты ожидал от первой анимации топорного меха, сделанной как эксперимент )

moka 06.12.2011 21:54

Ответ: Вопросы про Xors3D
 
10 секунд самой анимации, а не куча текста, кручении камеры и др. нафиг не нужного.

Crystal 06.12.2011 23:27

Ответ: Вопросы про Xors3D
 
Цитата:

Сообщение от MoKa (Сообщение 212773)
10 секунд самой анимации, а не куча текста, кручении камеры и др. нафиг не нужного.

Вот так бывает, ожидания не оправдываются )

Зыж, фаны поняли бы. Музон из аниме про мехов популярного, и стилистика меха.

Harter 07.12.2011 00:41

Ответ: Вопросы про Xors3D
 
Симпатичный кораблик! Сам делал?

Crystal 07.12.2011 01:20

Ответ: Вопросы про Xors3D
 
Цитата:

Сообщение от Harter (Сообщение 212790)
Симпатичный кораблик! Сам делал?

Дык говно же. Да сам, первый топорный вариант (незаконченный).
Расчёт на транспортировку двух мехов, и палубу с каютами.
Надо будет переделывать, херня вышло. Стараться можно...

Платон Александрович 07.12.2011 05:36

Ответ: Вопросы про Xors3D
 
CrystalDev
.Squid
gimpact

.Squid 07.12.2011 13:41

Ответ: Вопросы про Xors3D
 
Я знаю о GImpact и он даже есть в Ксорсе под названием Concave Shape. Но 10К полигонов для него много.
А для статического тримеша нормально.

ANIK123 09.12.2011 23:17

Ответ: Вопросы про Xors3D
 
Народ - в MSVS переключил режим с дебага на релиз - повыскакивало куча ошибок типа:
Цитата:

Компоновка...
DATAR.obj : error LNK2001: неразрешенный внешний символ "_xEntityDisableSleeping@8"
DATAR.obj : error LNK2001: неразрешенный внешний символ "_xEntityAddSphereShape@12"
DATAR.obj : error LNK2001: неразрешенный внешний символ "_xFreeEntityBody@4"
...........................blablabla.............. ........
DATAR.obj : error LNK2001: неразрешенный внешний символ "_xLoadMesh@8"
DATAR.obj : error LNK2001: неразрешенный внешний символ "_xEntityZ@8"
FIXorsBridge.obj : error LNK2001: неразрешенный внешний символ "__imp__xTextureBuffer@8"
FIXorsBridge.obj : error LNK2001: неразрешенный внешний символ "__imp__xLoadAnimTexture@24"
...........................blablabla.............. ........
FIXorsBridge.obj : error LNK2001: неразрешенный внешний символ "__imp__xBufferHeight@4"
FIXorsBridge.obj : error LNK2001: неразрешенный внешний символ "__imp__xBufferWidth@4"
FIXorsBridge.obj : error LNK2001: неразрешенный внешний символ "__imp__xGetTextureSurface@8"
Что надо сделать дабы исправить сию проблему?

wolfhound512 10.12.2011 00:55

Ответ: Вопросы про Xors3D
 
Настроить релиз, как ранее настроил дебаг
Нужно указать "дополнительные зависимости" - Xors3d.lib
и может еще какие настройки

ANIK123 11.12.2011 02:51

Ответ: Вопросы про Xors3D
 
wolfhound512 - еще раз спасибо!)

Возник еще другой маленьий вопросик:
Использую функцию xPointEntity(a, b, 0.1f) - но объект поворачивается к другому объекту моментально - не смотря на указанное Мной 0.1f (пробовал и другие значения)
зы: в документации третий параметр значится как "ролл" - а обьект должен поворачиваться по "яве" - в этом трабла чтоли?
Еще пробовал поворачивать энтити по вектору (xAlignToVector()) - результат даже не могу описать)
Как быть то?

dsd 11.12.2011 16:58

Ответ: Вопросы про Xors3D
 
Цитата:

Сообщение от ANIK123 (Сообщение 213487)
wolfhound512 - еще раз спасибо!)

Возник еще другой маленьий вопросик:
Использую функцию xPointEntity(a, b, 0.1f) - но объект поворачивается к другому объекту моментально - не смотря на указанное Мной 0.1f (пробовал и другие значения)
зы: в документации третий параметр значится как "ролл" - а обьект должен поворачиваться по "яве" - в этом трабла чтоли?
Еще пробовал поворачивать энтити по вектору (xAlignToVector()) - результат даже не могу описать)
Как быть то?

1. Первое запоминаешь текущий углы нацеливаемого объекта.
2. xPointEntity(a, b) считываешь нужный угол.
3. Ставишь объекту угол равный первому плюс некоторая часть разницы между вторым и первым положением.

Можно сделать что бы за кадр поворачивалось на фиксированный угол либо на часть всей дельты. В первом варианте будет поворот с равной угловой скоростью, а во втором при приближение к нужному углу объект будет более реалистично притормаживать.
Впрочем, счас гуры укажут более эффективный способ :-D

иксАлигнтовектор работает еще лучше. Вектор к которому нужно отравнять: Позиция цели минус позиция пушки. Вектор по которому стоит пушка это (cos(pitch)*sin(yaw);cos(yaw);sin(pitch)*sin(yaw)) хз почему, но это так. Далее из вектора к которому нужно прицелить вычитаем текущий вектор положения пушки или чего там у тебя. Получается вектор от конца текущего положения к концу нужного. Делишь этот третий вектор на кол-во кадров за которое нужно довернуть до цели. Прибавляешь к вектору текущей ориентации поделенный вектор дельты. Прицеливаешь ентити к итогу. Тоже профит.

HolyDel 11.12.2011 17:42

Ответ: Вопросы про Xors3D
 
DeltaYaw же

ANIK123 15.12.2011 22:13

Ответ: Вопросы про Xors3D
 
Спасибо!)
А как игру на паузу поставить? Остановить симуляцию физики и т п, хотя Я приблезительно представляю себе как это реализовать но все же скажите как Вы это делаете)
И еще (наверн самый даунский Мой вопрос): как пользоваться дельта-таймом?)))

H@NON 15.12.2011 23:04

Ответ: Вопросы про Xors3D
 
делаешь внутренний цикл :
Код:

While pause=true
    ...обновляем только паузу
Wend


ANIK123 30.12.2011 13:57

Ответ: Вопросы про Xors3D
 
Спасибо, а как на счет дельты?)

Spy4433 12.01.2012 21:47

Ответ: Вопросы про Xors3D
 
Всем добрый вечер.

Сел изучать шейдеры в RenderMonkey
Код:

float4x4 matViewProjection : ViewProjection;

struct VS_INPUT
{
  float4 Position : POSITION0;
  float2 Txr1: TEXCOORD0;
};

struct VS_OUTPUT
{
  float4 Position : POSITION0;
  float2 Txr1: TEXCOORD0;
};

VS_OUTPUT Effect_Group_1_myeffect_Pass_0_Vertex_Shader_vs_main( VS_INPUT Input )
{
  VS_OUTPUT Output;

  Output.Position = mul( Input.Position, matViewProjection );
  Output.Txr1=Input.Txr1;
  return( Output );
  }

tex2D(Texture0,inTxr1);

float4 Effect_Group_1_myeffect_Pass_0_Pixel_Shader_ps_main( float4 inDiffuse: COLOR0,
                float2 inTxr1:    TEXCOORD0
              ) : COLOR0
{
 
    return tex2D(Texture0,inTxr1);
}



//--------------------------------------------------------------//
// Technique
//--------------------------------------------------------------//
technique myeffect
{
  pass Pass_0
  {
      VertexShader = compile vs_2_0 Effect_Group_1_myeffect_Pass_0_Vertex_Shader_vs_main();
      PixelShader = compile ps_2_0 Effect_Group_1_myeffect_Pass_0_Pixel_Shader_ps_main();
  }

}

и пытаюсь подключить к хорс+блиц..
sh_fx=xLoadFXFile("myeffect.fx")
после этого все зависает т.е даже не возвращает в sh_fx

что не так подскажите

moka 13.01.2012 00:01

Ответ: Вопросы про Xors3D
 
А Логи ксорса ничего не говорят?
Да и замени ViewProjection, на MATRIX_WORLDVIEWPROJ.

Spy4433 13.01.2012 00:46

Ответ: Вопросы про Xors3D
 
логи , что то ничего не говорят
Код:

        0:00:00:00.004        Physical screen size: 338mm x 270mm. Aspect ratio: 1.25185 (5:4).
0:00:00:00.014        X8R8B8B8 backbuffer format.
0:00:00:00.014        No antialiasing.
0:00:00:00.025        640x480x32 windowed graphics mode
0:00:00:00.025        Setting new aspect ratio: 1.33333
New virtual viewport is 640 x 480
0:00:00:00.045        No game controllers found.
0:00:00:00.143        Squall loaded successfully.
0:00:00:00.144        xPhysics is loaded.
0:00:00:00.145        Default world created ( 0703FD60 )
0:00:00:00.150        New font 'Tahoma' (size: 10) loaded in 4.369 ms.
0:00:00:00.150        New camera (handle: 070750F8) is created in 0.118 ms.
0:00:00:00.151        New sphere (handle: 07076F70) is created in 0.782 ms.
0:00:00:00.154        New texture (handle: 07070D48) is loaded from file 'tex.bmp' in 2.7 ms.

собственно после создания текстуры должна выполнятся xLoadFXFile


может я что то не так делаю, или чего то не понимаю ?

Пс приложение зависает полностью

moka 13.01.2012 01:03

Ответ: Вопросы про Xors3D
 
Код давай, и ехе.

Spy4433 13.01.2012 01:18

Ответ: Вопросы про Xors3D
 
Вложений: 1
все в архиве

и вопрос
ViewProjection

MATRIX_WORLDVIEWPROJ -что это есть ? и почему надобно его а не ViewProjection


по любому мой косяк

dsd 13.01.2012 01:36

Ответ: Вопросы про Xors3D
 
Кстати у меня получались иногда шейдеры вещающие приложение при отсутствии каких-либо ошибок в логах. Лечилось это переписыванием шейдера с нуля.
Цитата:


VS_OUTPUT Effect_Group_1_myeffect_Pass_0_Vertex_Shader_vs_ma in( VS_INPUT Input )
{
VS_OUTPUT Output;

Output.Position = mul( Input.Position, matViewProjection );
Output.Txr1=Input.Txr1;
return( Output );
}

tex2D(Texture0,inTxr1);
//че это значит?
float4 Effect_Group_1_myeffect_Pass_0_Pixel_Shader_ps_mai n( float4 inDiffuse: COLOR0,
float2 inTxr1: TEXCOORD0
) : COLOR0
{

return tex2D(Texture0,inTxr1);
}
Сотри это и тыкай пальцем лучше стандартный шейдер из шагов
Код:

float4x4 matrixWorldViewProj : MATRIX_WORLDVIEWPROJ; // матрица итоговая
float4x4 matrixWorld : MATRIX_WORLD; // матрица мировая
float3 lightDirection : LIGHT0_DIRECTION; // направление
float4 lightColor : LIGHT0_COLOR; // цвет
float4 entityColor : COLOR_DIFFUSE; // цвет объекта
texture diffuseTexture : TEXTURE_0; // текстура
// описываем sampler
sampler diffuseSampler = sampler_state
{
Texture = <diffuseTexture>; // привязываем текстуру
// устанавливаем адресацию координат
AddressU = WRAP;
AddressV = WRAP;
AddressW = WRAP;
// устанавливаем фильтрацию
MinFilter = ANISOTROPIC;
MagFilter = ANISOTROPIC;
MipFilter = ANISOTROPIC;
// устанавливаем уровень фильтрации
MaxAnisotropy = 4;
};
// входная структура для вершинного шейдера
struct VSInput
{
float4 position : POSITION;
float3 normal : NORMAL;
float2 texCoords : TEXCOORD0;
};
// структура для результата вершинного шейдера
struct VSOutput
{
float4 position : POSITION;
float3 normal : TEXCOORD1;
float2 texCoords : TEXCOORD0;
};
// вершинный шейдер
VSOutput VSMain(VSInput input)
{
// объект для выходных данных
VSOutput output;
// трансформируем позицию вершины
output.position = mul(input.position, matrixWorldViewProj);
// трансформируем и нормализуем нормаль
output.normal = normalize(mul(input.normal, matrixWorld));
// переписываем текстурные координаты
output.texCoords = input.texCoords;
// возвращаем результат
return output;
}
// пиксельный шейдер
float4 PSMain(VSOutput input) : COLOR0
{
// делаем выборку из текстуры
float4 diffuse = tex2D(diffuseSampler, input.texCoords);
// расчитываем освещенность точки
float lit = dot(input.normal, -lightDirection);
// возвращаем результирующий цвет пиксела
return diffuse * entityColor * lit * lightColor;
}
// техника для отрисовки
technique Diffuse
{
pass p0
{
VertexShader = compile vs_2_0 VSMain();
PixelShader = compile ps_2_0 PSMain();
}
}

И не выучишь ты ХЛСЛ не выучив основы си или даже спп. На своем опыте говорю:)

dsd 13.01.2012 01:40

Ответ: Вопросы про Xors3D
 
Цитата:

Сообщение от Spy4433 (Сообщение 216664)
все в архиве

и вопрос
ViewProjection

MATRIX_WORLDVIEWPROJ -что это есть ? и почему надобно его а не ViewProjection


по любому мой косяк

Насколько я понимаю это семантики.
Они нужны для того чтобы хорс понял что нужно записать в эту переменную. Ну что бы ручками из хорса меньше всяких xSetFXFloat передавать.

float4 Effect_Group_1_myeffect_Pass_0_Pixel_Shader_ps_mai n( float4 inDiffuse: COLOR0,
float2 inTxr1: TEXCOORD0
//тут по идее должен вывод вершинного шейдера быть.
) : COLOR0
{

return tex2D(Texture0,inTxr1);
}

Ну и текстура у тебя не объявлена никак.

Если поменять твой чудо шейдер на не косячный из шагов то приложение работает. Компилятор шейдеров наверно просто охренел от твоего эпического творчества.

ANIK123 26.01.2012 14:05

Ответ: Вопросы про Xors3D
 
Привет Всем!)
Расскажите Мне Пожалуйста о дельта-тайме и о его использовании
В гугле не получилось найти что-то внятное и конкретное -_-

Krep_Kospit 15.02.2012 19:14

Ответ: Вопросы про Xors3D
 
сделал машинку. В качестве колёс использую части самой модели.

Код:

For l = 0 To 5
        wheel.wheel = New wheel

                If l=5 Then wheel\entity = xFindChild(tank\model, "wheel5")
                If l=3 Then wheel\entity = xFindChild(tank\model, "wheel3")
                If l=1 Then wheel\entity = xFindChild(tank\model, "wheel1")
                If l=4 Then wheel\entity = xFindChild(tank\model, "wheel4")
                If l=2 Then wheel\entity = xFindChild(tank\model, "wheel2")
                If l=0 Then wheel\entity = xFindChild(tank\model, "wheel0")
               
                        xEntityParent wheel\entity, tank\model;, False

               
                xEntityTexture wheel\entity, wheelT
            wheel\max_Rotation = 15000
                xEntityAddWheel(tank\model, wheel\entity)
                  xEntityWheelSetConnectionPoint(tank\model, l, xEntityX(wheel\entity), xEntityY(wheel\entity), xEntityZ(wheel\entity))
                xEntityWheelSetAxle(tank\model, l,-1.0, 0.0, 0.0)
                xEntityWheelSetRadius(tank\model, l, 1.0)
                xEntityWheelSetMaxSuspensionForce(tank\model, l, wheel\max_Rotation)
                xEntityWheelSetSuspensionLength(tank\model, l, 1.5)
                xEntityWheelSetSuspensionStiffness(tank\model, l, 3.8)
                xEntityWheelSetSuspensionDamping(tank\model, l,2.22)
                xEntityWheelSetSuspensionCompression(tank\model,l, 0.3)
                xEntityWheelSetFriction(tank\model, l, 300)
                xEntityWheelSetRollInfluence(tank\model, l, 0.18);
                ;xEntityAddsphereShape(wheel\entity,0, 0.1)       


        Next

Происходит смещение колёс по координатам, т.е. немного вниз и вправо. С чем это может быть связано?

dsd 15.02.2012 20:26

Ответ: Вопросы про Xors3D
 
xEntityWheelSetRay(body,0,xr,yr,zr);
Ты направление по которому колесо смещается не выставил.

Krep_Kospit 15.02.2012 21:22

Ответ: Вопросы про Xors3D
 
Цитата:

Сообщение от dsd (Сообщение 219640)
xEntityWheelSetRay(body,0,xr,yr,zr);
Ты направление по которому колесо смещается не выставил.

ставил все нули - колёса улетали вообще... другие значения не улучшили ситуации... наверно, я не понимаю, как правильно прописывать тут?

dsd 15.02.2012 21:40

Ответ: Вопросы про Xors3D
 
Направление оси по которой у тебя колесо смещается. То бишь вектор который смотрит в том же направлении. А нулевой вектор параллелен любому, поэтому оно и смещается куда хочет, наверно.

Sashka007 16.02.2012 00:02

Ответ: Вопросы про Xors3D
 
Всем привет, подскажите пожалуйста, у меня неадекватно работают коллизии:

For i=1 To 30 Step 2
sta.map = New map
sta\mesh=xCopyEntity(map_l)
xPositionEntity sta\mesh,0,(-xMeshHeight(sta\mesh)+19.7)*i,0
xEntityColor sta\mesh,255/((i+1)/3),255/((i+1)/3),255/((i+1)/3)
xEntityType sta\mesh,2
sta\dist=340
Next

For i=0 To 30 Step 2
sta.map = New map
sta\mesh=xCopyEntity(map_r)
xPositionEntity sta\mesh,0,(-xMeshHeight(sta\mesh)+19.7)*i,0
xEntityColor sta\mesh,255/((i+1)/3),255/((i+1)/3),255/((i+1)/3)
xEntityType sta\mesh,2
sta\dist=340
Next

Где то они работают, где то тело сквозь проходит, где то наполовину входит в другое. Кстати если xCopyEntity заменить на xCopyMesh и также xPositionEntity на xPositionMesh, то все нормально, но мне не нужен такой вариант.

Krep_Kospit 16.02.2012 19:57

Ответ: Вопросы про Xors3D
 
Нужно просчитать пересечения куба и машинки.
поставил:
Код:

        xEntityPickMode tank\center_cube,3
        xEntityPickMode tank\model,3, 0, True

далее просчитываю(внедряю второй цикл):

Код:

For tankE.tank = Each tank ;CHooSER
                        If Not tank\model=tankE\model Then
               
                        If xEntityPick(tank\center_cube, 10)=tankE\model  Then End
                     
                        EndIf
                Next

результата нет. если же делаю xEntityPick(tank\center_cube, 10)>0, то всё работает.

dsd 16.02.2012 21:17

Ответ: Вопросы про Xors3D
 
А не проще добавить машинке и кубику физическую форму и не маяться херней? Ведь в итоге если получится, то получится тоже самое и не факт, что быстрей или хотя бы лучше.

Krep_Kospit 16.02.2012 21:38

Ответ: Вопросы про Xors3D
 
не. мне надо только просчитать, что они пересеклись, без использования физической модели.

dsd 16.02.2012 22:46

Ответ: Вопросы про Xors3D
 
Цитата:

Код:

BBDECL int BBCALL xMeshesIntersect  ( Entity *  entity1, 
  Entity *  entity2 
 ) 

Returns true if the specified meshes are currently intersecting.

Parameters:
entity1 First entity handle 
entity2 Second entity handle 

BBDECL int BBCALL xMeshesBBIntersect  ( Entity *  entity1, 
  Entity *  entity2 
 ) 

Returns true if the specified meshes bounding boxes are currently intersecting.

Deprecated:
Use xEntitiesBBIntersect() instead.
Parameters:
entity1 First entity handle 
entity2 Second entity handle


Читай справку. Да?

Krep_Kospit 17.02.2012 10:14

Ответ: Вопросы про Xors3D
 
хм, за это спасибо. не знал.
хотя проблема моя решилась поворотом объектов на 180 градусов.

Krep_Kospit 23.02.2012 22:03

Ответ: Вопросы про Xors3D
 
такой вопрос... создаю машинки:

Код:

;;;;FIRST CAR
first_car=xLoadAnimMesh("models\first_car.fbx")
xhideentity first_car
Global logoTexture = xLoadTexture("\textures\first_car_tex.jpg")
CreateTank(first_car,  logoTexture, Rand(-200,300),40,Rand(-200,300), 1, 10, 2500, 20, 40,10)
For i=0 To 5
        CreateTank(first_car,  logoTexture, Rand(-200,300),40,Rand(-200,300), 0, 10, 2500, 20, 40,10)
Next
;;;;FIRST CAR

сама функция:

Код:

Function CreateTank(model, textureT,x#,y#,z#, is_player, hp,  max_speed, step_speed, max_rotate_wheels,steer_step)
       
;create tank
        ;[Block]
        tank.tank= New tank
        tank\model = model
        xEntityTexture tank\model, textureT
        xPositionEntity(tank\model, x,y,z, True)
        xEntityAddBoxShape tank\model,        300, 20,21,49
        tank\is_player=is_player
        tank\hp=hp
       
;VEHICLE
        xEntityCreateVehicle(tank\model)
        xEntityDisableSleeping(tank\model)
        tank\max_speed = max_speed
        tank\step_speed = step_speed
        tank\cur_speed = 0
        tank\max_rotate_wheels = max_rotate_wheels
        tank\steer_step = steer_step
;VEHICLE end
       
       
        ;0 - pivot for hand
        ;1 - hand
        ;2 - pivot for weapon
        ;3 - weapon
        ;LEFT_HAND START
        tank\left_weapon[0] = xFindChild(tank\model, "pivot2")
        tank\left_weapon[1] = xLoadAnimMesh("models\hand.fbx")
       
        xExtractAnimSeq tank\left_weapon[1], 0,100
        xExtractAnimSeq tank\left_weapon[1], 100,200
       
        ;weapon
        tank\left_weapon[3] = xLoadAnimMesh("models\axe.fbx")
        tank\left_weapon[2] = xFindChild(tank\left_weapon[1], "Box001")
        xPositionEntity (tank\left_weapon[3], xentityx(tank\left_weapon[2]), xentityy(tank\left_weapon[2]),xentityz(tank\left_weapon[2]))
        xentityparent (tank\left_weapon[3], tank\left_weapon[2])
        ;weapon end
        xScaleEntity tank\left_weapon[0], 1,1,1
        xEntityParent (tank\left_weapon[2],xFindChild(tank\left_weapon[1], "bone004"))
        xEntityParent (tank\left_weapon[1], tank\left_weapon[0], False)
        xEntityTexture tank\left_weapon[0], logoTexture
        ;LEFT_HAND End
       
        ;Right_HAND START
        tank\Right_weapon[0] = xFindChild(tank\model, "pivot1")
        tank\Right_weapon[1] = xLoadAnimMesh("models\hand.fbx")
       
        xExtractAnimSeq tank\right_weapon[1], 0,100
        xExtractAnimSeq tank\right_weapon[1], 200,300
       
       
        ;weapon
        tank\Right_weapon[3] = xLoadAnimMesh("models\axe.fbx")
        tank\Right_weapon[2] = xFindChild(tank\Right_weapon[1], "Box001")
        xPositionEntity (tank\Right_weapon[3], xentityx(tank\Right_weapon[2]), xentityy(tank\Right_weapon[2]),xentityz(tank\Right_weapon[2]))
        xentityparent (tank\Right_weapon[3], tank\Right_weapon[2])
        ;weapon end
        xScaleEntity tank\Right_weapon[0], 1,1,1
        xEntityParent (tank\Right_weapon[2],xFindChild(tank\Right_weapon[1], "bone004"))
        xEntityParent (tank\Right_weapon[1], tank\Right_weapon[0], False)
        xEntityTexture tank\Right_weapon[0], logoTexture
        ;Right_HAND End
       
       
       
        tank\target=0
        number=number+1
        tank\cur_number = number
       
        ;CUBE
        ;[Block]
        ;0 - left
        ;1 - right
        ;2 - center
        ;3 - first
        tank\cube[2]=xcreatecube()
        xEntityParent (tank\cube[2],tank\model, False)
        xPositionEntity (tank\cube[2], xentityx(tank\model), xentityy(tank\model),xentityz(tank\model)-35, True)
        xscaleentity tank\cube[2], 1,1,1
        xentityalpha tank\cube[2],0;.3
       
        tank\cube[0]=xcreatecube()
        xPositionEntity tank\cube[0], xentityx(tank\model)+20, xentityy(tank\model),xentityz(tank\model)-35
        xEntityParent tank\cube[0],tank\model
        xscaleentity tank\cube[0], 1,1,1
        xentityalpha tank\cube[0],0;.3
       
        tank\cube[1]=xcreatecube()
        xPositionEntity tank\cube[1], xentityx(tank\model)-20, xentityy(tank\model),xentityz(tank\model)-35
        xEntityParent tank\cube[1],tank\model
        xscaleentity tank\cube[1], 1,1,1
        xentityalpha tank\cube[1],0;.3
       
        tank\cube[3]=xcreatecube()
        xPositionEntity tank\cube[3], xentityx(tank\model), xentityy(tank\model),xentityz(tank\model)-55
        xEntityParent tank\cube[3],tank\model
        xscaleentity tank\cube[3], 1,1,1
        xentityalpha tank\cube[3],0;.3
       
        ;[End Block]
       
        tank\b=xcreatecube();pick
        xscaleentity tank\b, 12,6,17;12,6,25
        xEntityParent tank\b,tank\model,False
        xPositionEntity (tank\b, xentityx(tank\model), xentityy(tank\model),xentityz(tank\model), True)
        xentityalpha tank\b,0;.3
        xEntityPickMode tank\b,3
       
        ;[End Block]
;CREATE WHEELS
        ;[Block]
       
        For l = 0 To 5
                wheel.wheel = New wheel
               
                If l=5 Then wheel\entity = xFindChild(tank\model, "wheel5")
                If l=3 Then wheel\entity = xFindChild(tank\model, "wheel3")
                If l=1 Then wheel\entity = xFindChild(tank\model, "wheel1")
                If l=4 Then wheel\entity = xFindChild(tank\model, "wheel4")
                If l=2 Then wheel\entity = xFindChild(tank\model, "wheel2")
                If l=0 Then wheel\entity = xFindChild(tank\model, "wheel0")
               
                xEntityParent wheel\entity, tank\model
               
                xEntityTexture wheel\entity, wheelT
            wheel\max_Rotation = 15000
                xEntityAddWheel(tank\model, wheel\entity)
                xEntityWheelSetConnectionPoint(tank\model, l, xEntityX(wheel\entity), xEntityY(wheel\entity), xEntityZ(wheel\entity))
                xEntityWheelSetAxle(tank\model, l, -1.0, 0.0, 0.0)
                xEntityWheelSetRadius(tank\model, l, 1.0)
                xEntityWheelSetMaxSuspensionForce(tank\model, l, wheel\max_Rotation)
                xEntityWheelSetSuspensionLength(tank\model, l, 1.5)
                xEntityWheelSetSuspensionStiffness(tank\model, l, 3.8)
                xEntityWheelSetSuspensionDamping(tank\model, l,2.22)
                xEntityWheelSetSuspensionCompression(tank\model,l, 0.3)
                xEntityWheelSetFriction(tank\model, l, 300)
                xEntityWheelSetRollInfluence(tank\model, l, 0.18);
        Next
        ;[End Block]
;CREATE WHEELS END
; tank creation end
        SeedRnd xmillisecs()
End Function

получаю в итоге: все создаваемые машины появляются в одной и той же точке. Это решается, если вместо tank\model = model пишу tank\model = xCopyEntity(model). Но мне кажется, что в этом случае программа загружается дольше, чем должна. Можно как-то оптимизировать код?

LLI.T.A.L.K.E.R. 10.03.2012 15:18

Ответ: Вопросы про Xors3D
 
Само-ответ: хотя ладно, сделаю опцию Тени вкл./откл. Всё равно на слабых системах их бессмысленно нагружать.

Кроме PSSM теней в Xors3D других нет?
А то с PSSM у меня на нетбуке MAV указывает на строку в файле xors3d.bb
Цитата:

xRenderWorld_(tween#, renderShadows%)
Когда отключаю лампочки - стандартный пример shadows.bb запускается.

Ещё есть тени на FastExt, а "так же" ProShadows - но они завязаны на FastExt либе, которой нужна инициализация Graphics3D... Но на Xors3D ведь задаётся xGraphics3D - в этом и не связываются вещи.

(как и на Blitz3Dx9 - команда bGraphics3D - туда тоже дополнительные либы не прикрутить)


Придётся использовать чистый Blit3D с FastExt.. Пока самый лучший для меня вариант на счёт теней.

ЗЫ: Но всё же сравнил скорость отрисовки на Blitz3Dx9 и Blitz3D с 1500 подвижными ящиками - DX9 быстрей в 1.5~2 раза.
Пример Xors3D army.bb тоже нормально двигается, не то что с 4-6 аним_моделями в чистом блитзе с большими тормозами.

moka 12.03.2012 14:51

Ответ: Вопросы про Xors3D
 
FastExt тени не имеют ничего общего к Xors3d.
Встроенные тени работают, но хз как там с PSSM.
Советую писать их самому - так будет больше контроля. Да и опыту наберёшься.

LLI.T.A.L.K.E.R. 13.03.2012 16:08

Ответ: Вопросы про Xors3D
 
Я имел в виду, что FastExt тени мне нравятся (и работают на слабых системах) - жаль что Xors3D с ними не совместим.

moka 13.03.2012 19:29

Ответ: Вопросы про Xors3D
 
Потому что эти тени реализованы на древнейшей технологии, которая кстати в новых устройствах, потихоньку выпиливается.

Spy4433 08.06.2012 18:57

Ответ: Вопросы про Xors3D
 
возник вопрос про чилды и их пивот

допустим есть модель.. :) разбираем на чилды
и вот мне надо как то крутить чилд по своей оси.. а пивот находится там же где и центр модели, флаг глобал и тд не помогает , есть ли возможность как то меня центр чилда средствами xors3d?

ANIK123 09.06.2012 00:14

Ответ: Вопросы про Xors3D
 
может трансформация мира координат поможет (xTForm)? хотя скорее всего Я не совсем понял вопрос -_-

moka 09.06.2012 03:41

Ответ: Вопросы про Xors3D
 
Если знаешь где центр чилда должен быть, то примени MoveMesh на этот чилд чтобы подвинуть в центр модели, а затем MoveEntity чтобы подвинуть этот чайлд на нужное положение где он находился прежде.
Таким образом сместишь все данные установив центр, и поставишь обратно чайлд где он был.
Либо если есть исходник модели - ты что-то намудрил с экспортом конкретно.

{pk}fire 18.06.2012 20:44

Ответ: Вопросы про Xors3D
 
Вложений: 3
Сделал модель в 3ds max и поставил lightmap в gile[s] Вложение 17047
Сделал модель в 3ds max, там же наложил нормал мапу, потом в Xors3D обработал шейдером
Вложение 17048
Сделал модель в 3ds max, там же наложил нормал мапу и поставил lightmap в gile[s]
Вложение 17049

Скажите пожалуйста, если можно, то как совмещать bump и карту теней? текстурировать модель программно не вариант. Заранее спасибо

4yBa4Ok 18.06.2012 21:20

Ответ: Вопросы про Xors3D
 
А не проще ли юзать встроеные тени?

{pk}fire 18.06.2012 21:43

Ответ: Вопросы про Xors3D
 
Может и проще, но я нашел только пример динамических теней, подскажите как делать или скиньте примерчик)

4yBa4Ok 19.06.2012 10:27

Ответ: Вопросы про Xors3D
 
А я про динамическое и говорю

{pk}fire 19.06.2012 12:53

Ответ: Вопросы про Xors3D
 
а нагружать сильно не будет? А то карта размером приличная, примерно как в кс.

EvilChaotic 19.06.2012 20:03

Ответ: Вопросы про Xors3D
 
Если ты используешь ксорс, тебе нужно в шейдере твоего эффекта получить текстуру лайтмапа. Для начала можешь помножить ее на конечный результат в пиксельном шейдере. А вообще нормальный лайтмап должен использовать не только темные градации света. т.е. середина цвета должна быть примерно 128, самый темный 0, светлый 255. Таким образом ты можешь получить на переходах света и тени контрасты. Это сильно скажется на восприятии картинки.

{pk}fire 19.06.2012 20:21

Ответ: Вопросы про Xors3D
 
EvilChaotic, утешил нуба

А попроще нет вариантов? :)

4yBa4Ok 20.06.2012 09:16

Ответ: Вопросы про Xors3D
 
У меня была карта из сталкера, я юзал динамические тени и ниче не висло)


Часовой пояс GMT +4, время: 04:36.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot