Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 3D-программирование

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 14.08.2011, 18:49   #241
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Имитация водной поверхности.

Класс, написанно явно для дебилов! То что надо
(Offline)
 
Ответить с цитированием
Старый 14.08.2011, 23:24   #242
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Имитация водной поверхности.



Супер функция, попозже сделаю поверхность на вид сплошной и на все вертексы.

Handle CreateSpring(double torrad, double inrad,int elements,int segments,int vitki,double shagvitka){


Handle mesh=xCreateMesh();
Handle meshsurf=xCreateSurface(mesh);
int i,h,x;
double x1,y1,z1;
//vertex creation
    for (i=0;i<=(vitki*elements);i++){
        for (h=0;h<=segments;h++){
            double deg1,deg2;
            //перевод в радианы
            /*
            1градус=3,1417/180
            */
            deg1=i*6.2834/elements;
            deg2=h*6.2834/segments;
            x1=torrad*sin(deg1)+inrad*cos(deg2)*sin(deg1);
            y1=torrad*cos(deg1)+inrad*cos(deg2)*cos(deg1);
            z1=inrad*sin(deg2)+shagvitka*i/elements;
                xAddVertex (meshsurf,x1,y1,z1,inrad*h/segments,inrad*i/elements);
            };
        };
int v0,v1,v2,v3;
int qvert = xCountVertices(meshsurf)-1;
   for (x=0;x<=(vitki*elements);x++){
        for (i=0;i<=segments;i++){
            v0=i+segments*x;
            v1=v0+1;
            v2=v0+segments;
            v3=v2+1;
            if (v3<=qvert) {
                xAddTriangle (meshsurf,v2,v0,v3);
                xAddTriangle (meshsurf,v0,v1,v3);
            };
        };
    };

xUpdateNormals (mesh);
return mesh;
};
P.s. Посоветуйте математическую либу. Щоб там оперции с векторами были, штоб много математики разной. И либу, которая синусы косинусы резко считает, пусть и с погрешностью.

предлагать решать sin(x)=x-x^3/3!+x^5/5!-x^7/7!... до полного самоудвлетворения не надо
http://alglib.sources.ru/?

Последний раз редактировалось dsd, 15.08.2011 в 00:30.
(Offline)
 
Ответить с цитированием
Старый 15.08.2011, 00:36   #243
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Имитация водной поверхности.

P.s. Посоветуйте математическую либу. Щоб там оперции с векторами были, штоб много математики разной. И либу, которая синусы косинусы резко считает, пусть и с погрешностью.
минимум (типа синусов) есть, если заинклудишь <cmath>
(Offline)
 
Ответить с цитированием
Старый 15.08.2011, 00:51   #244
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Имитация водной поверхности.

Я это знаю. И наличие в теле функции нескольких синусов и косинусов, какбэ намекает на это
(Offline)
 
Ответить с цитированием
Старый 15.08.2011, 01:00   #245
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Имитация водной поверхности.

ну попробуй для остального тогда поюзать XNA математику.
поставляется вместе в directx sdk
(Offline)
 
Ответить с цитированием
Старый 15.08.2011, 22:43   #246
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Имитация водной поверхности.

void sincos(float a, float &s, float &c) 
{ 
  _asm
  { 
    fld a
    fsincos
    fstp dword ptr [c]
    fstp dword ptr [s]
  }
}
использовать так:
float sinx, cosx;
sincos(angle,sinx,cosx);
работает быстрее, чем если считать синус и косуинус по раздельности.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
dsd (15.08.2011)
Старый 15.08.2011, 22:58   #247
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Имитация водной поверхности.

А как значение разделяются? В смысле присваиваются?
Осознал как

Кстати
IV. Current futeres:
Второе слово помоему пишется несколько иначе features вроде.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
HolyDel (16.08.2011)
Старый 16.08.2011, 13:50   #248
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Имитация водной поверхности.

Оффтоп:

Вчера на опте прикол был

Стою в общем в очереди. Продавцы армяне женщина и мужик. Мужик такой: 1,80, 90 кг, вены даже на сиськах торчат. У них ажиотажный спрос, очередь. Тут приходит еще один мужик, протягивает продавцу пачку тысячных и намекает, что какбэ не плохо уже забрать товар. Армян тихо так отвечает , что щас сбегает на склад и заявка будет готова, ну и срывается в галоп, прихватив пачку бабок. Покупатель кричит че-то в след на родном языке, продавец чето орет в ответ и увеличивает скорость километров этак до 30 в час. И тут за армяном срываются два мимо проходивших 20 летних пионера : D. И попытались они восстановить справедливость И выхватили они не только от армяна, но еще и от охраны.

Последний раз редактировалось dsd, 16.08.2011 в 18:21.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Dream (17.08.2011)
Старый 16.08.2011, 20:25   #249
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Имитация водной поверхности.

char console[256];
sprintf_s(console, 256, "fps: %d", xGetFPS());
xText (10, 20, console);
В виду того, что я делаю это в кодеблокс, а оно использует линуксячий компилятор.

То не смотря на эту строку в самом начале:#include <stdio.h>
Оно мне пишет:
"error: 'sprintf_s' was not declared in this scope|"

А при sprintf(console, 256, "fps: %d", xGetFPS());

error: invalid conversion from 'int' to 'const char*'
и
error: initializing argument 2 of 'int sprintf(char*, const char*, ...)'|

в виде
char console[256];
sprintf(console, "%d", xGetFPS());
xText (10, 30, console);
Работает, так можно или это плохо? а "%d" обозначает добавить к строке?


Мой перевод в аргб, тупо работает
int ARGB(int a,int r,int b, int g){
int colora=(a<<24)+(r<<16)+(b<<+g;
return colora;
};
xWritePixel (100,100,ARGB(255,255,0, 0));

Последний раз редактировалось dsd, 16.08.2011 в 23:26.
(Offline)
 
Ответить с цитированием
Старый 16.08.2011, 22:50   #250
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Имитация водной поверхности.

Изучи Bitwise Operators, для смещения по битам при сложении чисел, а то эти умножения на 16777216 или 65536, просто ужасны..
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
dsd (16.08.2011)
Старый 16.08.2011, 23:16   #251
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Имитация водной поверхности.

okey



BBDECL void BBCALL xCreateDSS ( int width,
int height
)

Creates a depth-stencil surface.

Depth-stencil surface is used for z-buffer technique. It's used to write the scene depth for clipping invisible pixels. By default DSS is used with backbuffer dimensions, but if you want to render to larger textures you must create DSS with an appropriate dimensions. E.g. if you use 800x600 mode, default DSS will be 800x600 too. If you want to render to 1024x1024 texture (e.g. for shadows), you must call xCreateDSS(1024, 1024) to make things work.

Parameters:
width Depth-stencil surface width
height Depth-stencil surface height
Захотелось мне нарисовать вершины на мешах, а те из них которые не видимы, что бы не рисовать. И захотелось мне читать для каждого пикселя его з-буффер. Как?


Какая интересная функция
BBDECL void BBCALL xSetRenderWindow ( HWND window )

Sets the window for rendering.

It may be used by map editor or other tools to render into some gadgets.

Parameters:
window Pointer to rendering window
(Offline)
 
Ответить с цитированием
Старый 16.08.2011, 23:42   #252
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Имитация водной поверхности.

по принтам:

http://ru.wikipedia.org/wiki/Printf
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
dsd (30.07.2012)
Старый 17.08.2011, 17:41   #253
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Имитация водной поверхности.

xProjectedZ() Нужно только для вывода значения от команды xCameraProject2D ()?

При xCameraProject() туда тоже пишется какоето значение чуть меньшее 1 если точка перед камерой. Что это за значение?
Средствами хорса я вообще могу получить данные из буфера глубины?
(Offline)
 
Ответить с цитированием
Старый 17.08.2011, 17:48   #254
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Имитация водной поверхности.

Средствами хорса я вообще могу получить данные из буфера глубины?
збуффер?
получить для обработки на ЦПУ? крайне не рекомендую это делать т.к. гонять збуфер из видеопамяти в оперативку будет офигительно снижать фпс.
(Offline)
 
Ответить с цитированием
Старый 17.08.2011, 17:57   #255
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Имитация водной поверхности.

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

Пока пришла идея сравнивать нормаль и вектор от точки до позиции камеры и рисовать если угол меньше равен 90. Но если в сюрфейсе есть изгиб то будут рисоваться и те вершины которые не видимы.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com