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=6180)

Sashka007 17.10.2011 19:47

Ответ: Xors3D
 
В чем может быть проблема? Почему map не показывается? А если убрать xHideEntity(back_map), то показывается весь back_map, на блице все нормально работает.

int back_map = xLoadAnimMesh("DATA/models/map/map.b3d");
int map = xFindChild(back_map,"Plane02");
xEntityType(map,col_map);
xHideEntity(back_map);

SBJoker 17.10.2011 19:53

Ответ: Xors3D
 
Цитата:

Сообщение от Sashka007 (Сообщение 206160)
В чем может быть проблема? Почему map не показывается? А если убрать xHideEntity(back_map), то показывается весь back_map, на блице все нормально работает.

int back_map = xLoadAnimMesh("DATA/models/map/map.b3d");
int map = xFindChild(back_map,"Plane02");
xEntityType(map,col_map);
xHideEntity(back_map);

Загрузил модель
нашел чайлд
присвоил группу коллизий

скрыл загруженную модель

Очевидно в результате работы программы мы не увидим модель, что не так?

Sashka007 17.10.2011 19:59

Ответ: Xors3D
 
вот: http://narod.ru/disk/28688556001/Game.rar.html


Вот почему-то найденый чайлд мы не видим.

RBK 17.10.2011 22:06

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

pozitiffcat 24.10.2011 17:06

Ответ: Xors3D
 
есть у кого шейдер, для создания мультяшной графики, рисованной. Вроде технология cell-shading называется... ???

dsd 24.10.2011 17:16

Ответ: Xors3D
 
Тебе нужно в зависимости от угла между нормалью и вектором соединяющим пиксель и камеру красить каким-либо цветом пиксель. Он простой сам по себе шейдер.
Вообще в архиве с хорсом в сэмплах идет ToonShaded Light. Ну можно еще с бесшовной текстурой как-нить по диагонали типа карандашом заштрихованную в какой-то пропорции смешивать. И постэффектом маской все контуры зубчатыми делать.


//##########################################
// mSL
//
// Toon Shading
// with 3 Light Source Types
//
// Open Source, for Free Using
// Author: MoKa (Maxim Miheyev)
// Mail: [email protected]
// Visit: RubuX.net
//##########################################


//################## Varriables ##################
const float4x4 MatWorldViewProj;
const float4x4 MatWorld;

// Light
const float4 AmbientClr; // Ambient Color
const float4 LightClr; // Light Color
const float4 CountourClr; // Contour Color
const half CountourWidth; // Contour Width

// Positions
float4 PosLight; // Light Position
float RngLight; // Light Range
float4 PosCam; // Camera Position

// Other
static float4 Color;
static float cTS;

static float nLight;
static float nCam;



//################## Textures ##################
const texture tToonGradient; // Toon Gradient Texture
sampler1D TexToonGradient=sampler_state {
Texture = <tToonGradient>;
ADDRESSU = CLAMP;
ADDRESSV = CLAMP;
MAGFILTER = LINEAR;
MINFILTER = LINEAR;
MIPFILTER = LINEAR;
};


//################## Input VS ##################
struct sv_N {
float4 Position : POSITION0;
float3 Normal : NORMAL;
};
//################## Output VS ##################
struct sp_PW_N {
float4 Position : POSITION0;
float4 pWorld : TEXCOORD0;
float3 Normal : TEXCOORD1;
};


//################## VS ##################
void vs_PW_N( in sv_N IN, out sp_PW_N OUT ) {
OUT.Position = mul(IN.Position,MatWorldViewProj);
OUT.pWorld = mul(IN.Position,MatWorld);
OUT.Normal = normalize(mul(IN.Normal,MatWorld));
}

//################## PS ##################
float4 psDirectional( in sp_PW_N IN ) : COLOR {
PosLight = normalize(PosLight);
PosCam = normalize(PosCam-IN.pWorld);

nLight = saturate(dot(PosLight,IN.Normal));
nCam = normalize(dot(PosCam,IN.Normal)-CountourWidth);

cTS = tex1D(TexToonGradient,nLight).r;

Color = (AmbientClr*(1.0f-cTS)+(cTS*LightClr))*nCam+((1.0f-nCam)*CountourClr);

return float4(Color.rgb,1.0f);
}

float4 psPoint( in sp_PW_N IN ) : COLOR {
PosLight = normalize(PosLight-IN.pWorld);
PosCam = normalize(PosCam-IN.pWorld);

nLight = saturate(dot(PosLight,IN.Normal));
nCam = normalize(dot(PosCam,IN.Normal)-CountourWidth);

cTS = tex1D(TexToonGradient,nLight).r;

Color = (AmbientClr*(1.0f-cTS)+(cTS*LightClr))*nCam+((1.0f-nCam)*CountourClr);

return float4(Color.rgb,1.0f);
}

float4 psPointDistance( in sp_PW_N IN ) : COLOR {
RngLight = saturate(1.0f-(distance(IN.pWorld,PosLight)/RngLight));
if (RngLight>0.0f) {
PosLight = normalize(PosLight-IN.pWorld);

nLight = saturate(dot(PosLight,IN.Normal)*pow(RngLight,.1)) ;

cTS = tex1D(TexToonGradient,nLight).r;

Color = AmbientClr*(1.0f-cTS)+(cTS*LightClr);
} else {
Color = AmbientClr;
}

PosCam = normalize(PosCam-IN.pWorld);
nCam = normalize(dot(PosCam,IN.Normal)-CountourWidth);

Color = Color*nCam+(1.0f-nCam)*CountourClr;

return float4(Color.rgb,1.0f);
}


//################## Technique ##################
technique Directional {
pass p0 {
AlphaBlendEnable= false;
vertexshader = compile vs_2_0 vs_PW_N();
pixelshader = compile ps_2_0 psDirectional();
}
}
technique Point {
pass p0 {
AlphaBlendEnable= false;
vertexshader = compile vs_2_0 vs_PW_N();
pixelshader = compile ps_2_0 psPoint();
}
}
technique PointDistance {
pass p0 {
AlphaBlendEnable= false;
vertexshader = compile vs_2_0 vs_PW_N();
pixelshader = compile ps_2_0 psPointDistance();
}
}

pozitiffcat 25.10.2011 10:24

Ответ: Xors3D
 
у меня объект b3d состоит из множества мешей, следовательно там куча тестур. Как мне это обработать, тем более что модель анимационная. И когда я накладываю шейдер, она теряет текстуру

dsd 25.10.2011 10:49

Ответ: Xors3D
 
Накладывать на каждый меш шейдер отдельно и передавать в шейдер соответствующую текстуру
xSetEntityEffect(mesh,Shader);
xSetEffectTexture(mesh,"seaside",seaside_tex);

А если у тебя именно в меше куча сюрфейсов с отличающимися текстурами, то тебе надо пытаться, что-то замутить с текстурными координатами или в цвете вершин в шейдер дополнительно передавать данные о порядковом номере текстуры для текущей вершины и в шейдер загружать кучу текстур и учить его думать чо чем красить.
Лучше въехать в шейдеры хоть чу-чуть и уже планировать более рациональное их использование. Написанные кем то шейдеры твою игру не спасут. Вот.

pozitiffcat 25.10.2011 11:58

Ответ: Xors3D
 
Цитата:

Сообщение от dsd (Сообщение 206856)
Накладывать на каждый меш шейдер отдельно и передавать в шейдер соответствующую текстуру
xSetEntityEffect(mesh,Shader);
xSetEffectTexture(mesh,"seaside",seaside_tex);

А если у тебя именно в меше куча сюрфейсов с отличающимися текстурами, то тебе надо пытаться, что-то замутить с текстурными координатами или в цвете вершин в шейдер дополнительно передавать данные о порядковом номере текстуры для текущей вершины и в шейдер загружать кучу текстур и учить его думать чо чем красить.
Лучше въехать в шейдеры хоть чу-чуть и уже планировать более рациональное их использование. Написанные кем то шейдеры твою игру не спасут. Вот.

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

HolyDel 25.10.2011 12:26

Ответ: Xors3D
 
Цитата:

Как вот мне узнать что этот пиксел крайний и его нужно нарисовать черным?
для честного outlining-а нужен SM 4

pozitiffcat 25.10.2011 12:49

Ответ: Xors3D
 
Цитата:

Сообщение от HolyDel (Сообщение 206867)
для честного outlining-а нужен SM 4

это еще че такое

SBJoker 25.10.2011 12:51

Ответ: Xors3D
 
ShaderModel 4 / Шейдеры четвертой версии

dsd 25.10.2011 13:03

Ответ: Xors3D
 
Ну если в кратце и врать, то.

в шейдере у тебя есть входные данные - этакие переменные и константы.

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

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

И по сути он работает уже не с моделью, а только с одним ее треугольником. Из вершинного шейдера ты передал текстурные координаты вершинам треугольника и командой sampler2d() можешь приказать шейдеру из какой текстуры узнать какая точкой той текстуры попадает в это место. Это есть наш цвет с которым мы должны работать дальше.

Еще в вершинном шейдере мы подготовливаем данные о нормали поверхности. Которые магическим образом передаются в текущий пиксель. Еще мы можем в шейдер этакой глобальной переменной передать вектор вдоль которого светит свет.
Дальше командой normalize() можно сделать векторы нормали и направления света длинной 1. И есть команда dot() скалярное произведение векторов. Котрая при нормализации входных векторов вернет косинус угла между ними.

И вот тут происходит магия. У нас есть из сэмплера цвет пикселя от текстуры. Есть косинус угла между нормалью и повернутым обратно светом, этот косинус является той. Частью света которую отразит наш пиксель прямо нам в глаз. Перемножаем вектор цвета но косинус получаем четырехмерный вектор цвета который и есть наш пиксель для которого посчитан правильный цвет и затенение.
сорри за мой хранйцузский акцент, пишу с мобилы.

.Squid 25.10.2011 14:45

Ответ: Xors3D
 
Цитата:

Сообщение от pozitiffcat (Сообщение 206860)
я вообще не могу понять шейдеры.. откуда мне брать формулы вычисления. Как вот мне узнать что этот пиксел крайний и его нужно нарисовать черным? типо окантовка модели... и т.п.

Если совсем шейдеры непонятны, то надо начинать вообще с азов. Например, вывести объект в красном цвете без освещения и прочего. А потом переходить к сложному. Учебного материала по шейдерам куча.

pozitiffcat 03.11.2011 13:47

Ответ: Xors3D
 
Люди. В Xors samples есть шейдер DeferredFinal.fx. Как им пользоваться?
и еще... есть ли возможность узнать имя файла текстуры используемой на entity

4yBa4Ok 04.11.2011 18:15

Ответ: Xors3D
 
люди а где можно взять готовые шейдеры?

moka 04.11.2011 20:09

Ответ: Xors3D
 
"Готовых" не бывает. Все и всегда нужно менять под определённые условия и задачи.
Есть в ревизиях с ксорсом папка с шейдерами, есть в примерах, есть в гугле.
Снова: невозможно толком юзать чужие шейдера. Если ты собираешься их юзать, то тебе нужно их умень писать.
Читай доку от Xors3D Team по гейдерам.

Nerd 06.11.2011 15:16

Ответ: Xors3D
 
В BlitzMax если использовать хорс и вызвать реквестер файлов(RequestFile), вылетает WINDOWS EXCEPTION: EXCEPTION_ACESS_VOLATION. wtf?

.Squid 06.11.2011 15:50

Ответ: Xors3D
 
А шо эта?

Nerd 06.11.2011 16:39

Ответ: Xors3D
 
Цитата:

Сообщение от .Squid (Сообщение 208580)
А шо эта?

Диалог сохранения/открытия файла. Ну типо http://www.microsoftofficeforbeginne.../open_doc9.png

.Squid 07.11.2011 02:45

Ответ: Xors3D
 
Сэмпл? Иначе не знаю. Впрочем, я и сейчас не знаю.

Randomize 07.11.2011 03:25

Ответ: Xors3D
 
Цитата:

Сообщение от Nerd96 (Сообщение 208577)
В BlitzMax если использовать хорс и вызвать реквестер файлов(RequestFile), вылетает WINDOWS EXCEPTION: EXCEPTION_ACESS_VOLATION. wtf?

Ну дык оно и понятно. От какого окна обычно создаётся диалог открытия файла? От блицмаксовского, а тут его нет. Вылет оправдан. Поковыряй модуль блицмакса и найди ф-цию RequestFile в варианте под Win32 и через винапи вызови окно от хендла окна xors3d

dsd 09.11.2011 01:18

Ответ: Xors3D
 
Цитата:

BBDECL void BBCALL xStretchRect ( Texture * texture1,
int x1,
int y1,
int width1,
int height1,
Texture * texture2,
int x2,
int y2,
int width2,
int height2,
int filter
)
Copys data from one texture to another using hardware accelerated method.

Parameters:
texture1 Source texture handle
x1 x coordinate of top left corner of source rectangle
y1 y coordinate of top left corner of source rectangle
width1 Width of source rectangle
height1 Height of source rectangle
texture2 Destination texture handle
x2 x coordinate of top left corner of destination rectangle
y2 y coordinate of top left corner of destination rectangle
width2 Width of destination rectangle
height2 Height of destination rectangle
filter Filtering method
Почему то копирует только нарисованные мной текстуры. А загруженные не хочет.
PHP код:

seaside_tex=xLoadTexture("tex/Gravel01.jpg");
    
normal_tex=GrimMagicPikcha(512,1.99,xMillisecs());

    
int width=256;

    
megatex=xCreateTexture(1024,1024);
//это не работает
    
xStretchRect    (seaside_tex,0,0,width,width,megatex,0,0,width,width,6);
//а это работает
    
xStretchRect    (normal_tex,0,0,width,width,megatex,0,0,width,width,6); 

Какой нужен волшебный флаг или манипуляции с текстурами?

.Squid 09.11.2011 02:07

Ответ: Xors3D
 
Дело в том, что создаваемые текстуры помещаются в default pool, а загружаемые в managed pool. Managed pool, как видно по названию, управляется дх-ом / дровами: запихивают текстуры в раму, когда надо, воссоздают их после потери девайса и т.п. Default pool не такой управляемый. Но оно и не надо для создаваемых текстур, т.к. они, как правило, создаются в качестве рендер таргетов.
У IDirect3DDevice9::StretchRect, который используется в xStretchRect, помимо кучи прочих ограничений, нет возможности копирования в пулах, отличных от default. Т.е. фактически, этот метод нужен для копирования кусков текстур в видео-памяти.
Такие дела. Надо добавить в документацию и соответствующее сообщение в логгер.

dsd 09.11.2011 20:40

Ответ: Xors3D
 
Походу не судьба мне запилить саморисующийся текстурный атлас...
PHP код:

Handle seaside_img=xLoadImage("tex/Gravel01.jpg");
    
Handle lgrass_img=xLoadImage("tex/Grass01.jpg");
    
Handle dgrass_img=xLoadImage("tex/Grass02.jpg");
    
Handle plain_img=xLoadImage("tex/Gravel02.jpg");
    
Handle lmountain_img=xLoadImage("tex/dirt01.jpg");
    
Handle mmountain_img=xLoadImage("tex/rock01.jpg");
    
Handle hmountain_img=xLoadImage("tex/snow02.jpg");
    
Handle smountain_img=xLoadImage("tex/snow01.jpg");
    
Handle rock_img=xLoadImage("tex/rockn.jpg");

    
int width=xImageWidth(seaside_img);
    
megatex=xCreateTexture(width*4,width*4);

    
xSetBuffer(xTextureBuffer(megatex));
    
xDrawImage(seaside_img,0,0);
    
xDrawImage(lgrass_img,width,0);
    
xDrawImage(dgrass_img,2*width,0);
    
xDrawImage(plain_img,3*width,0);

    
xDrawImage(lmountain_img,0,width);
    
xDrawImage(mmountain_img,width,width);
    
xDrawImage(hmountain_img,2*width,width);
    
xDrawImage(smountain_img,3*width,width);

    
xDrawImage(rock_img,0,2*width);

    
xSetBuffer(xBackBuffer());
    
Handle cube=xCreateCube();
    
xScaleEntity(cube,20,20,20);
    
xPositionEntity(cube,0,20,80);
    
xEntityTexture(cube,megatex); 

В режиме дебага рисует в релизе нет. Чяднт?

.Squid 09.11.2011 21:25

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

dsd 09.11.2011 21:41

Ответ: Xors3D
 
Код в папке бин, два экзешника который де баг работает который не де баг не работает, но и не падает :)
Может это только у меня такие чудеса? :dontknow:

.Squid 10.11.2011 02:11

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

dsd 10.11.2011 22:42

Ответ: Xors3D
 

должно было нарисовать это. Но в принципе для меня это не критично, атлас я могу в отдельной проге сделать скомпиленной в режиме дебага.


0:00:00:01.372 Xors3d Engine version: 1.15.716.0 ( Sep 16 2011 )
0:00:00:01.372 OS: Microsoft Windows 7 Service Pack 1 (build 6.1.7601)
0:00:00:01.372 4 CPUs: Intel(R) Core(TM) i5-2410M CPU @ 2.30GHz at 2294MHz (MMX, SSE, SSE2, SSE3)
0:00:00:01.372 RAM: 3947 MBytes. Paged memory: 7893 MBytes.
0:00:00:01.388 Video: Intel(R) HD Graphics Family. VRAM: 128 MBytes.
0:00:00:01.388 Physical screen size: 344mm x 193mm. Aspect ratio: 1.78238 (40:23).
0:00:00:11.278 Xors3d Engine is released
Это со встроенным видео рисует только в дебаге


0:00:00:00.280 Xors3d Engine version: 1.15.716.0 ( Sep 16 2011 )
0:00:00:00.280 OS: Microsoft Windows 7 Service Pack 1 (build 6.1.7601)
0:00:00:00.280 4 CPUs: Intel(R) Core(TM) i5-2410M CPU @ 2.30GHz at 2294MHz (MMX, SSE, SSE2, SSE3)
0:00:00:00.280 RAM: 3947 MBytes. Paged memory: 7893 MBytes.
0:00:00:00.280 Video: Intel(R) HD Graphics Family. VRAM: 2014 MBytes.
0:00:00:00.280 Physical screen size: 344mm x 193mm. Aspect ratio: 1.78238 (40:23).
0:00:00:01.550 Xors3d Engine is released
с gt540m не рисует никак. Наверно в дровах дело? хотя качал сентябрьские с офф сайта

HolyDel 10.11.2011 23:02

Ответ: Xors3D
 
рисует "это" и в релизе и в дебаге.
win7, i7-2630QM, radeon HD 6850M, 8GB RAM

Program23 11.11.2011 19:07

Ответ: Xors3D
 
у меня черный квадрат Малевича
winXP, amd athlon , geoforce 7200gt, 512MB RAM

pozitiffcat 17.11.2011 10:26

Ответ: Xors3D
 
Вложений: 1
Че не нравится ксорсу в шейдере!!!
Can't create effect from file 'deferred.fx'!
ID3DXEffectCompiler: There were no techniques
ID3DXEffectCompiler: Compilation failed
это пишет лог
вот сам шейдер

pax 17.11.2011 10:33

Ответ: Xors3D
 
Вероятно то что он в utf8?

pozitiffcat 17.11.2011 10:58

Ответ: Xors3D
 
Цитата:

Сообщение от pax (Сообщение 210056)
Вероятно то что он в utf8?

и правда! мега спасибо

dsd 19.11.2011 16:35

Ответ: Xors3D
 
Код:

float4x4 matrixWorldViewProj : MATRIX_WORLDVIEWPROJ; // матрица итоговая
float4x4 matrixWorld : MATRIX_WORLD; // матрица мировая
float4x4 matrixCamView : MATRIX_VIEWPROJ;

в вершинном получаю:
Код:

output.position =mul(input.position, matrixWorld);
output.position =mul(output.position,matrixCamView);

что дает тот же результат, что и

Код:

output.position =mul(output.position,matrixCamProj);
Но когда я пытаюсь передать из хорса
matrixCamView
Код:

xSetEffectMatrix(entity,"matrixCamView",xGetViewProjMatrix(Camera),0);
а в шейдере

Код:

float4x4 matrixWorldViewProj : MATRIX_WORLDVIEWPROJ; // матрица итоговая
float4x4 matrixWorld : MATRIX_WORLD; // матрица мировая
float4x4 matrixCamView;

в вершинном получаю:
Код:

output.position =mul(input.position, matrixWorld);
output.position =mul(output.position,matrixCamView);

Происходит фэйл, ентити не рисуется и ошибки нет.
Что я делаю не так?

pozitiffcat 19.11.2011 18:13

Ответ: Xors3D
 
output.position =mul(input.position, matrixWorld);
output.position =mul(output.position,matrixCamView);
ты в выход сначала одно пишешь потом затираешь другим... это как так. Оно должно проканать?

dsd 19.11.2011 18:55

Ответ: Xors3D
 
Я сначала умножаю ентити на матрицу её позиции в мире, а затем я умножаю результат на произведение видовой и проекционной матрицы, тут сложней ошипка и не внутри шейдера все-таки

pozitiffcat 19.11.2011 19:27

Ответ: Xors3D
 
А точно.. не всматривался.. просто я обычно использую временные переменные поэтому тупанул

dsd 25.11.2011 15:49

Ответ: Xors3D
 
На идеологически правильную запись:
xSetEffectMatrix(entity, "matrixCamView",(float*)(*xGetViewProjMatrix(shade cam)), 0);
Оно мне пишет:
\bin\main.cpp|104|error: invalid type argument of 'unary *'|

Есть ли другой рабочий способ получить указатель на матрицы изнутри хорса?

.Squid 25.11.2011 19:53

Ответ: Xors3D
 
Эх, я забыл, что почти все указатели приводятся к типу Handle. Очередная хрень, связанная с поддержкой кучи языков.
В общем xGetViewProjMatrix на самом деле возвращает D3DXMATRIX*
У него есть оператор приведения к float*, который возвращает указатель на массив из 4х4 флоутов.
xSetEffectMatrix в качестве третьего параметра принимает float*.
Но вместо всех этих указателей в функциях фигурирует Handle.
Поэтому сначала надо Handle привести к D3DXMATRIX*, затем применить оператор (float*), и затем назад в Handle.
Для всех приведений надо использовать reinterpret_cast.

Прошу прощения за такой дебилизм. Если найду время, то постараюсь подправить генератор хедеров для С++.

pozitiffcat 16.12.2011 16:20

Ответ: Xors3D
 
Насчет смены разрешения экрана. Может сделать функцию которая изменяет размер окна и заново устанавливает вьюпорт относительно новых настроек в DX ?

pozitiffcat 17.12.2011 15:23

Ответ: Xors3D
 
И еще... у каждого загруженного объекта есть материалы... Было бы хорошо если бы была возможность присваивать файл эффекта на материал, и тем самым шейдер работал бы на всех sub объектах модели...

dsd 20.12.2011 14:55

Ответ: Xors3D
 
В новой ревизии больше не пишет ошибки компиляции шейдеров в лог. Это жестоко и негуманно.

.Squid 20.12.2011 16:29

Ответ: Xors3D
 
Эм.. вообще-то пишет.

dsd 20.12.2011 16:33

Ответ: Xors3D
 
Ок, значит у меня глюки. В том смысле, что галлюцинации.

Зы: Оно на одни пишет, а на другие нет. :)

.Squid 20.12.2011 18:27

Ответ: Xors3D
 
На какие не пишет?

dsd 20.12.2011 19:13

Ответ: Xors3D
 
Я стер нафиг проект, стер тот глючный шейдер и написал все заново и оно заработало. Проблема была, как всегда, в моих кривых руках.

Nerd 24.12.2011 00:34

Ответ: Xors3D
 
Последнии версии библиотек под блицмакс на End крахаются с ошибкой C++ Runtime Library, копирую старые версии - работает нормально.

pozitiffcat 24.12.2011 00:45

Ответ: Xors3D
 
Наверное код в студию

dsd 28.12.2011 21:14

Ответ: Xors3D
 
Цитата:

BBDECL void BBCALL xEntityCompoundChildSetRotation ( Entity * entity,
int index,
float pitch,
float yaw,
float roll
)

Sets a new rotation of the compound's subshape.

Parameters:
entity Entity handle
index Index of the subshape
pitch New pitch angle
yaw New yaw angle
roll New roll angle
В чем pitch yaw & roll в этой шайтан-функции измеряются. Потому что ни на градусы ни на радианы это не похоже.

xEntityCompoundAddBox(body,2.0,0.25,1.25);
xEntityCompoundChildSetRotation(body,2,0,0.015,0);
xEntityCompoundChildSetPosition(body,2,0,0.9,-1.5);
результат:

Hurrit 29.12.2011 00:03

Ответ: Xors3D
 
где обновление iXors3d?

.Squid 29.12.2011 00:41

Ответ: Xors3D
 
Цитата:

Сообщение от dsd (Сообщение 215610)
В чем pitch yaw & roll в этой шайтан-функции измеряются. Потому что ни на градусы ни на радианы это не похоже.

xEntityCompoundAddBox(body,2.0,0.25,1.25);
xEntityCompoundChildSetRotation(body,2,0,0.015,0);
xEntityCompoundChildSetPosition(body,2,0,0.9,-1.5);
результат:

Ну... DEG2RAD и RAD2DEG легко перепутать. Исправил.

Цитата:

Сообщение от Hurrit (Сообщение 215629)
где обновление iXors3d?

У меня на винте. До НГ залью. Инфа 100%.

Nerd 29.12.2011 01:45

Ответ: Xors3D
 
Цитата:

Сообщение от pozitiffcat (Сообщение 215078)
Наверное код в студию

Код:

Import xorsteam.xors3d

Print "123"

End

MAV (Точнее, EAV) на End. (до End всё всегда в порядке. За исключением вылета при попытке вызова xGetKey)
Не импортирую ксорс - всё в порядке. Юзаю старые dll-ки - всё в порядке.

.Squid 29.12.2011 02:14

Ответ: Xors3D
 
Пофиксил.

dsd 05.01.2012 19:23

Ответ: Xors3D
 
В документации к хорсу есть це:

Цитата:

Код:

#include "stdafx.h"
#include "TestProject.h"
#include <xors3d.h>
#include <iostream>

int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
        char msgBuffer[129];
        xGraphics3D(800, 600, 32, false, true);
        int camera = xCreateCamera();
        int light = xCreateLight();
        int cube = xCreateCube();
        xPositionEntity(cube, 0.0, 0.0, 10.0);
        while(!(xKeyHit(KEY_ESCAPE) || xWinMessage("WM_CLOSE")))
        {
                xTurnEntity(cube, 0.1, 0.1, 0.1);
                xRenderWorld();
                sprintf(msgBuffer, "Hello 3D World!");
                xText(10, 10, msgBuffer);
                sprintf(msgBuffer, "FPS: %i", xGetFPS());
                xText(10, 30, msgBuffer);
                xFlip();
        }
        return 0;
}


В кодеблокс у меня оно не запускалось с int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
Но замечательно работало с int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)

или даже int main()

Но в экспресс студии тоже самое. Что можно было в экспресс студии настроить не так? Или так и задумывалось?
MSVCRT.lib(crtexe.obj) : error LNK2001: неразрешенный внешний символ "_main"

HolyDel 05.01.2012 23:47

Ответ: Xors3D
 
#include <tchar.h>
int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{

Krep_Kospit 20.01.2012 16:09

Ответ: Xors3D
 
Здравствуйте.
Подскажите, пожалуйста, новичку, про функцию xCameraProject2D.
Я так понимаю, что это функция обратная xCameraProject, но если у xCameraProject я могу взять спроецированные координаты(xProjectedX и т.д.), то в справке по xCameraProject2D такие команды я не обнаружил. С помощью чего можно получить координаты после этой функции?

PS. извините, если не в ту тему.

dsd 28.01.2012 20:03

Ответ: Xors3D
 
Вроде бы ошибка в справке

Цитата:

BBDECL void BBCALL xEntityReleaseForces (Entity *entity)
Returns the x-component of the force acting on the entity's body.

Coover 31.01.2012 13:46

Ответ: Xors3D
 
Привет форумчане. Какое будущее ожидает Xors3D? какие нововведения впереди?

Colossus 02.02.2012 00:44

Ответ: Xors3D
 
вопрос по шейдерам : вот к примеру имеется модель, у нее 3 текстуры, Диффуз,Бамп,Спекуляр

все это видится в примере как :

Код:

Local tTextureDiffuse%=xLoadTexture("..\Media\Rockwall_Diffuse.jpg")
Local tTextureSpecular%=xLoadTexture("..\Media\Rockwall_Specular.png")
Local tTextureNormal%=xLoadTexture("..\Media\Rockwall_Normal.png")

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

moka 02.02.2012 01:57

Ответ: Xors3D
 
Есть семантики, почитай документацию, там о них есть инфа.

Nerd 09.04.2012 14:28

Ответ: Xors3D
 
Вложений: 1
Чото SaveMesh криво сохраняет UVW

pozitiffcat 11.04.2012 23:41

Ответ: Xors3D
 
Цитата:

Сообщение от Nerd96 (Сообщение 224981)
Чото SaveMesh криво сохраняет UVW

там в движке fbx sdk использовался какой-то старый... может из-за этого...

ANIK123 08.05.2012 22:04

Ответ: Xors3D
 
Судари: подскажите, объясните, расскажите - где у нас тут координата w подевалась то, ааа?)

не шейдер,ефикс
Код:

        Handle mesh = xCreateMesh();
        Handle surface = xCreateSurface(mesh);

        Handle vertex0 = xAddVertex (surface, 0, 0, 0, 0, 0, 0);
        Handle vertex1 = xAddVertex (surface, 1, 0, 0, 1, 0, 0.25f);
        Handle vertex2 = xAddVertex (surface, 0, 0, 1, 0, 1, 0.50f);
        Handle vertex3 = xAddVertex (surface, 1, 0, 1, 1, 1, 0.75f);

        Handle tri0 = xAddTriangle (surface, vertex0, vertex2, vertex1);
        Handle tri1 = xAddTriangle (surface, vertex3, vertex1, vertex2);

        Handle pss = xLoadFXFile("shaders/particles_def.fx");
        xSetEntityEffect(mesh, pss);

не исходник,срр
Код:

struct vsi
{
        float4 position : POSITION;
        float4 texCoords : TEXCOORD;
        float4 color : COLOR;
};


vsi VS(vsi i)
{
        i.position = mul(i.position, viewProj);
        i.color.rgb = i.texCoords.z;
        return i;
}

Результат работы вышеуказанного набора символов представляет Нам полик - ВНИМАНИЕ! - полностью черный!!! Ах. какая досада. С координатой v или u все играет
вопрос: где же ты, w, кто тебя обидел?!?
Стандартное заранее спасибо. За ответ или за найденную w - возможно вознаграждение:-)

UPD: как словить в шейдере цвет вертекса заданного через иксВертексКолор? Думал что с помощью COLOR_DIFFUSE но полностью белый квадратик показал мне фак...


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

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