forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   Я новичок! (http://forum.boolean.name/showthread.php?t=377)

HolyDel 03.01.2012 19:50

Ответ: Я новичок!
 
SetBuffer TextureBuffer(tex)
кажется

tirarex 03.01.2012 19:53

Ответ: Я новичок!
 
это я знаю а исчо над вывести на камеру наложить маску ,и как ?

Mr_F_ 03.01.2012 20:38

Ответ: Я новичок!
 
посмотри встроенный пример tex_render
маску класть не на камеру а на квад с текстурой, приклееный к экрану

tirarex 03.01.2012 20:43

Ответ: Я новичок!
 
знаю я как накладывать а вот как прикрепить к камере меш на который проецируется радар ? проблема в позицие

tirarex 03.01.2012 20:44

Ответ: Я новичок!
 
и непроще ли рендить в изображение накладывать маску и выводить на экран ?

Илья Остапишен 17.02.2012 18:17

Ответ: Я новичок!
 
Спасибо!

Krep_Kospit 20.02.2012 17:24

Ответ: Я новичок!
 
Товарищи!
смотрю пример castle.bb, где ещё как бы Марио бегает, и не могу найти, где там сделано так, чтобы спрайт выстрела не содержал чёрного фона... Поскольку при копировании кода из примера в мой файл этот самый чёрный фон имеется.
Кто может ткнуть носом в ответ?

FireOwl 20.02.2012 17:38

Ответ: Я новичок!
 
Поставь флаг: http://help.boolean.name/commands/3d...LoadSprite.htm

Krep_Kospit 20.02.2012 19:16

Ответ: Я новичок!
 
Цитата:

Сообщение от FireOwl (Сообщение 220141)

я уже ставил альфу, но спрайт выглядит совершенно не так, как в примере..

UPD. причина оказалась в источнике света... В тени спрайт меняется, на свету - то, что и должно быть.

Krep_Kospit 24.02.2012 19:07

Ответ: Я новичок!
 
помогите, пожалуйста!
считываю стоки из файла:
Код:

Global cur_name$[10]
names = xreadfile("names.txt")
For n= 0 To 10
        cur_name[n] = xReadLine$(names, 1)
Next

потом запускаю функцию
Код:

name_set()
Код:

Function name_set()
       
        For tank.tank = Each tank
                tank\name$ = cur_name[n]
                n=n+1
                Next
End Function

потом при нажатом ТАБе вывожу данные:

Код:

Function score()
       
        xText 200, 180, "Name"
        xText 400, 180, "Damage"
        xText 600, 180, "Kills"
               
                For tank.tank = Each tank
                        down = down+20
                        xText 200, 200+down, "" + tank\name$ - вот эти данные
                        xText 400, 200+down, "" + tank\damage
                        xText 600, 200+down, "" + tank\kills
                Next
End Function

в результате почему-то происходит вставка пустой строки:
http://rghost.ru/36685694

где я ошибся?

FireOwl 24.02.2012 19:40

Ответ: Я новичок!
 
А что, если в name_set() перед циклом обнулить n?

Krep_Kospit 24.02.2012 19:56

Ответ: Я новичок!
 
Цитата:

Сообщение от FireOwl (Сообщение 220435)
А что, если в name_set() перед циклом обнулить n?

никак :( к тому же, у меня n не глобальная...

Жека 28.02.2012 13:27

Ответ: Я новичок!
 
Может быть названия русские а шрифт русский не может отобразить?
Попробуй вот так поменять функцию:
Цитата:

Сообщение от Krep_Kospit (Сообщение 220433)
Код:

Function name_set()
       
        For tank.tank = Each tank
                tank\name$ = "Name of tank "+n
                n=n+1
        Next
End Function


Если нарисуются, то круг поиска глюка поуже станет.

LLI.T.A.L.K.E.R. 08.08.2012 01:44

Ответ: Я новичок!
 
Если сильно помучиться:
совместим ли Blitz3D с Simplygon-ом? (автоматическая LOD система)

http://www.donyalabs.com/features/integration-api
Книжка по API:
http://www.donyalabs.com/img/media/P...UsersGuide.pdf

Кирпи4 08.08.2012 02:26

Ответ: Я новичок!
 
- Слышите треск?
- Да, - сказали люди, - а что это?
- Это моя задница лопается от усердия...

Noobik 05.12.2012 14:12

Ответ: Я новичок!
 
Доброго времени суток!Я новичок в программировании, раньше изучал pascal, но потом случайно наткнулся на Blitz3d, язык понравился, потому что он более современный и ориентирован на новичков. Пару раз перечитал книгу по основам, где рассматриваются массивы, циклы, функции и т.д. Посмотрел примеры из хелпа, но проблема в том, что сам я ничего не могу написать. Здесь некоторые форумчане советуют начать с простых игрушек, таких как тетрис,арканоид, но я понятия не имею как все это реализовано, и в чужих исходниках не могу разобраться. Короче, помогите тормозу! Может есть какие нибудь книги, где все это рассматривается от простого к сложному. :"(

HolyDel 05.12.2012 14:28

Ответ: Я новичок!
 
начни с еще более простой.
например ездит палка и отбивает один мяч.
разбей ее на этапы.
1) просто вывести палку внизу экана
2) двигать палку по нажатиям на клавиши
3) ограничить движение палкой экраном
4) вывести мяч по центру экрана
5) заставить двигаться мяч
6) ограничить движение мяча экраном
ну как то так. строк 40 кода будет в итоге.

Noobik 05.12.2012 20:15

Ответ: Я новичок!
 
А как определить траекторию и угол движения мяча когда он отскакивает?

HolyDel 05.12.2012 20:23

Ответ: Я новичок!
 
ты покажи как сделал движение мяча.
если как то так
x = x +dx
y = y +dy
то отскакивание от горизонтальной поверхности будет dy = - dy, а от вертикальной dx = - dx

Skaner 07.12.2012 15:57

Ответ: Я новичок!
 
Удивительно, на B3D еще что-то делают)))

HolyDel 07.12.2012 16:39

Ответ: Я новичок!
 
B3D вечен

PREy 08.12.2012 18:52

Ответ: Я новичок!
 
Цитата:

Сообщение от Skaner (Сообщение 246019)
Удивительно, на B3D еще что-то делают)))

А что плохого в B3D? По моему хороший вариант для новичков, а после можно и на Xors3d перейти.

Arton 08.12.2012 21:18

Ответ: Я новичок!
 
Цитата:

Сообщение от Skaner (Сообщение 246019)
Удивительно, на B3D еще что-то делают)))

Ты так говоришь, как будто это что-то плохое...

Skaner 09.12.2012 09:41

Ответ: Я новичок!
 

Цитата:

Сообщение от Arton (Сообщение 246095)
Ты так говоришь, как будто это что-то плохое...

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

LLI.T.A.L.K.E.R. 09.12.2012 13:43

Ответ: Я новичок!
 
До тех времён пока MSWin не прекратит поддержку старых систем

boajuse 15.03.2013 00:38

Ответ: Я новичок!
 
после экспериментов с блитцем3д наткнулся на проблему чрезмерной загрузки процессора. Например, код:
"repeat
print "hello world"
until keyhit(1)"
при исполнении грузит проц на 99%.
это нормально?дебуггер отключен.

impersonalis 15.03.2013 00:49

Ответ: Я новичок!
 
Вложений: 1
Необходимо реализовать передачу кванта процессорного времени другим потокам. Самый ломовой (учитывая б3д) способ - вставить Delay 1 в конце тела цикла (ну можно ив начале - сами там, исходя из конкретики решаемой задачи, определитесь). По идее это должно спровоцировать переключение на другой поток и выделение ему некоторого дискретного минимального времени (вероятно, большего чем 1мс). В том виде, в каком код приведён сейчас, вы, фактически и говорите системе: выполнять с такой производительностью, с какой только возможно - именно поэтому нагрузка на цп 99%.
Вложение 18934
(фрагмент статьи про многопоточность, касающийся темы)
А вообще - концептуально касаясь производительности код, условно (ох сейчас меня закидают за придумывание терминологии) можно разделить на два типа: "взаимодействие" и "работа". Первый вариант кода: подгруздка данных из сети, мониторинг портов, обновление GUI, реакция на ввод пользователя - не должны выполняться в бесконечном цикле без всяких ограничений, как то: событие от таймера, от внешнего потока, сообщающего о необходимости перерисовать окошко, прочитать сетевые пакеты из буфера и т.п. Второй вариант кода: грубо говоря, разнообразные расчёты (так или иначе решаемые на ПК задачи формализуются до вычислений). Причём во втором случае - всю необходимую для вычислений информацию мы уже получили благодаря коду "взаимодействия". Глупо ограничивать себя и не стараться выполнить задачу как можно быстрее. Последнее, разумеется не касается неких гибридных вариантов, где вычисления выполняются фоном, так как их тяжесть (негативный эффект создаваемый неконтролируемой нагрузкой) критичнее, времени их работы (например: архивация большого обёъма данных; размазанный во времени обработчик ИИ юнитов в RTS [когда каждый кадр принимается решение только по некоторому количеству юнитов, чтобы сгладить выбросы в нагрузке, избежав подлагивания картинки]).

Вы привели код явно для "взаимодействия" а закодили его как "работа".

Пример из жизни:
код для вычисления сотни примеров:
быстро-быстро берём и решаем первый, затем второй и т.д.
код для взаимодействия:
-Петя, как освободишься - дай знать, а я пока посплю.

Неудачная архитектура (применения подхода "работа" в задаче "взаимодействие"):

В данном случае, Ослу не имеет смысл создавать повышенную нагрузку на ЦП (Шрек* - будем рассматривать именно их диалог, хотя Шрека то и дело подменяет Феона), т.к. очевидно, что:
1) такое разрешение по времени не нужно;
2) рациональнее "уснуть" и ждать наступления события.

*-на самом деле по аналогии это сущность персонализирующая собой совокупность "ЦП+поток оценки геоположения". Можно рассмотреть ситуацию иначе: первый поток - это Осёл, второй - Шрек, воздух (среда, позволяющая информации распространятся в виде звуковых колебаний) - шина передачи данных. Вместо того, чтобы ожидать сигнального пакета от второго потока, первый флудит в шину с максимальной частотой, делая невозможной работу третьего потока - Феоны - из-за перманентной занятости шины. ЦП - это некий формальный исполнитель программы с тремя потоками**: два из них постоянно работают со структурой (интерфейсной частью шины данных), третий поток спит (т.к. его культурность алгоритмически обозначает необходимость дождаться одновременной доступности в течение некоторого времени*** шины [разрешающего значения сигнального поля интерфейсной структуры] и доступности одного из потоков, с которым предстоит вести диалог - нетрудно заметить что это событие не наступит никогда: Осел или Шрек свободны, только когда говорит второй из них, т.е. занята шина).

**- ну это уже вопрос философии. С солипсистской точки зрения, все живые существа управляются на единственном реальном cpu - вашем мозге. См. ещё Телеология, Логос.
Здесь же мы рассматриваем локальный участок вселенной (внутри кареты), поэтому строим модель только для него.

*** - задержку можно интерпретировать как долгую реакцию, связанную с низким приоритетом потока Феона (планировщик выделяет квант Феоне так редко, что возможность говорить к этому времени всегда уже обнаруживает Осёл или Шрек), или как искусственную задержку в работе, величина которой позволяет отделить событие "пауза между словами" и "тишина".

Цитата:

В сущности, все модели неправильны, но некоторые полезны
Джордж Бокс

St_AnGer 15.03.2013 00:51

Ответ: Я новичок!
 
Цитата:

Сообщение от boajuse (Сообщение 254928)
после экспериментов с блитцем3д наткнулся на проблему чрезмерной загрузки процессора. Например, код:
"repeat
print "hello world"
until keyhit(1)"
при исполнении грузит проц на 99%.
это нормально?дебуггер отключен.

Это нормально, блиц сжирает всё свободное процессорное время. Добавление в простой бесконечный цикл Delay(1) разгрузит проц. Ну это всё конечно если мне память не изменяет. На форуме эта тема вроде поднималась неоднократно.

Во, Impersonalis опередил :)

апд: Моё 1000-е сообщение! Юбилей :)

boajuse 16.03.2013 13:16

Ответ: Я новичок!
 
спасибо за ответы, хотя я уже почти решил переходить на BlitzMax - там есть альфа-прозрачность для изображений по умолчанию(или в B3d тоже есть?)

Reizel 16.03.2013 13:41

Ответ: Я новичок!
 
Цитата:

Сообщение от boajuse (Сообщение 255010)
спасибо за ответы, хотя я уже почти решил переходить на BlitzMax - там есть альфа-прозрачность для изображений по умолчанию(или в B3d тоже есть?)

Очень разумное решение, если хочешь мутить 2д игру. Действительно, в максе есть не только прозрачность, но и другие доставляющие методы смешивания, плюс все это на порядок быстрее рисуется, нежели в блице, ибо реализовано через тот же 3д.К тому же присутствуют некоторые етоды отрисовки, которых опросту нет в блице - например, многоугольники(закрашенные, а при должном умении - еще и текстурированные), в общем это стопроцентный форвард) к тому же, в максе сам язык более гибок, ООП и ништяки из коробки. Плюс поддержка модулей и кода, написанного на С/С++(что иной раз очень необходимо), и возможность невозбранно прикрутить 3д-часть от самого блица, и использовать его в качестве рендера. А лучше хорс. Вот)

harmon 15.09.2013 03:04

Ответ: Я новичок!
 
Здравствуйте. У меня беда с загрузкой b3d. Загружаю и ставлю камеру в позицию объекта “geroy”. Но камера оказывется совершенно в другом месте.
For q%=1 To CountChildren (vr%)
vr1%=GetChild (vr%,q%)
vrt$=EntityName$(vr1%)
If vrt$<>"" Then
vrt1$=Lower$(vrt$)
If Instr(vrt1$,"door")>0 Then
EntityParent vr1%,0
t%=CopyEntity (vr1%)
FreeEntity vr1%
End If
If Instr(vrt1$,"geroy")>0 Then;ãëàâíûé ãåðîé
EntityParent vr1%,0
pl%=CopyEntity (vr1%,0)
cam%=CreateCamera (pl%)

End If
End If
Next
Что я не так делаю?

Arton 15.09.2013 03:16

Ответ: Я новичок!
 
Цитата:

Сообщение от harmon (Сообщение 267080)
Здравствуйте. У меня беда с загрузкой b3d. Загружаю и ставлю камеру в позицию объекта “geroy”. Но камера оказывется совершенно в другом месте.
For q%=1 To CountChildren (vr%)
vr1%=GetChild (vr%,q%)
vrt$=EntityName$(vr1%)
If vrt$<>"" Then
vrt1$=Lower$(vrt$)
If Instr(vrt1$,"door")>0 Then
EntityParent vr1%,0
t%=CopyEntity (vr1%)
FreeEntity vr1%
End If
If Instr(vrt1$,"geroy")>0 Then;ãëàâíûé ãåðîé
EntityParent vr1%,0
pl%=CopyEntity (vr1%,0)
cam%=CreateCamera (pl%)

End If
End If
Next
Что я не так делаю?

"Что, где, когда."

harmon 15.09.2013 03:25

Ответ: Я новичок!
 
vr%=loadanimmesh("lab.b3d");Загрузка комнаты
For q%=1 To CountChildren (vr%);Перебор всех элементов b3d
vr1%=GetChild (vr%,q%);Очередной элемент
vrt$=EntityName$(vr1%);Его имя
If vrt$<>"" Then;Если имя есть
vrt1$=Lower$(vrt$);Все буквочки делаем строчные
If Instr(vrt1$,"door")>0 Then;Если это дверь
EntityParent vr1%,0
t%=CopyEntity (vr1%)
FreeEntity vr1%
End If
If Instr(vrt1$,"geroy")>0 Then;Если это глав герой
EntityParent vr1%,0;Отвязываем его от всего B3d
pl%=CopyEntity (vr1%,0);Создаем копию
cam%=CreateCamera (pl%);привязываем камеру к копии

End If
End If
Next

Камера оказывается ровно в центре а не там где должна. Объект geroy находится на месте.

Arton 15.09.2013 03:40

Ответ: Я новичок!
 
harmon, если ты ставишь координаты только

cam%=CreateCamera (pl%);привязываем камеру к копии

То координаты камеры от этого не меняются, используй PositionEntity (ent,x,y,z)


Зачем ты вбрасываешь куски кода? Думаешь здесь сидят программисты-гадалки, по огрызку кода понимают проблему =/

harmon 15.09.2013 03:50

Ответ: Я новичок!
 
Не получилось. Камера оказывается ровно по середине меша.

Arton 15.09.2013 04:14

Ответ: Я новичок!
 
Цитата:

Сообщение от harmon (Сообщение 267086)
Не получилось. Камера оказывается ровно по середине меша.

Сейчас я покурю каучук и прозрею в чём твоя проблема...

[затягивает]

Вижу PositionEntity неправильно используешь ты...

[затягивает]

Камера в координатах объекта что бы была, EntityX() (а так же EntityY() и EntityZ()) применит надо тебе.

PositionEntity cam,EntityX (obj),EntityY (obj),EntityZ (obj)

cam - камера (или любой другой энтити)

obj - объект в чьи координаты надо ставить камеру...

[затягивает]

Файлы помощи блица держи Вложение 19679, на русский переведён он. Найдёшь помощь сильную там...

Распаковывать сюда ...\Blitz3D\help - подтвердить замену файлов.

[затягивает]

Ап


окай что то я и правда укурился...

А вот так например написать несудьба?

PositionEntity cam,EntityX (obj),EntityY (obj)+5,EntityZ (obj)

harmon 15.09.2013 04:15

Ответ: Я новичок!
 
Я именно так и применил PositionEntity cam%,EntityX(pl%),EntityY(pl%),EntityZ(pl%)
Объект (кубик geroy) находится в углу. Камера находится по середине. Вывел координаты совпадают а реальное положение нет.
Странно но координаты всех getchild 0,0,0.

Arton 15.09.2013 04:20

Ответ: Я новичок!
 
Цитата:

Сообщение от harmon (Сообщение 267090)
Я именно так и применил PositionEntity cam%,EntityX(pl%),EntityY(pl%),EntityZ(pl%)
Объект (кубик geroy) находится в углу. Камера находится по середине. Вывел координаты совпадают а реальное положение нет.

"Реальное положение", в смысле?
"Камера находится по середине" по середине кубика, или просто в центре 3D пространства?

Если просто применить позишен, камера оказывается в координатах кубика, то бишь в его центре, так?

Не понимаю в чём у тебя проблема, мало информации.

harmon 15.09.2013 04:28

Ответ: Я новичок!
 
Есть комната с дверью. В углу комнаты кубик с именем geroy (именно на его месте должна появляться камера). Загружаю узнаю где кубик (ставлю камеру). Камера не на месте кубика а ровно посередине комнаты. Проверил координаты всех CHILD - они все 0,0,0.
Проблема в том что камера не появляется на месте кубика.
Как сделать вложение в сообщение?

Arton 15.09.2013 04:35

Ответ: Я новичок!
 
Цитата:

Сообщение от harmon (Сообщение 267092)
Есть комната с дверью. В углу комнаты кубик с именем geroy (именно на его месте должна появляться камера). Загружаю узнаю где кубик (ставлю камеру). Камера не на месте кубика а ровно посередине комнаты. Проверил координаты всех CHILD - они все 0,0,0.
Проблема в том что камера не появляется на месте кубика.
Как сделать вложение в сообщение?

В расширенном режиме, внизу есть кнопка "Управление вложениями", справа над окошком ввода текста, свиток - "вложения".

Выложи исходник с медией, посмотрю что там.

Надеюсь там не ололо-сто страниц кода :-)

harmon 15.09.2013 04:40

Ответ: Я новичок!
 
Вложений: 1
Вот эта штука не работает.

Arton 15.09.2013 05:34

Ответ: Я новичок!
 
Брррр... Ничего не понял.
Учитывая что ты пользуешься картогрфшопом, думаю косяк в нём, что-то непонятное с координатами :dontknow:

Лучше воспользуйся 3D Max 2008 с B3d Pipeline, для блица самое оно :super:

harmon 15.09.2013 05:40

Ответ: Я новичок!
 
Сохранение всё равно в b3d. Камера должна появиться на месте кубика - который в углу на против двери. Может какие-то преобразования нужны (из локальных в глобальные) координат?

Arton 15.09.2013 05:47

Ответ: Я новичок!
 
Цитата:

Сообщение от harmon (Сообщение 267096)
Сохранение всё равно в b3d. Камера должна появиться на месте кубика - который в углу на против двери. Может какие-то преобразования нужны (из локальных в глобальные) координат?

Ну и что что в b3d.
Преобразования не какие ненужны, всё должно и так работать.
Может конечно в коде косяк не увидел, однако уверен что дело в картографе.

Я давным давно его забросил, когда столкнулся с подобными инфернальными проблемами.

Mr_F_ 15.09.2013 14:00

Ответ: Я новичок!
 
проверь, находится ли искомый объект в б3д.
сдаётся мне, что он даже не находится, и камера остаётся в нулевой точке.
объект может быть чайлдом другого объекта а не корня модели - искать надо тогда рекурсивно.

harmon 15.09.2013 14:02

Ответ: Я новичок!
 
Цитата:

Сообщение от Mr_F_ (Сообщение 267104)
проверь, находится ли искомый объект в б3д.
сдаётся мне, что он даже не находится, и камера остаётся в нулевой точке.
объект может быть чайлдом другого объекта а не корня модели - искать надо тогда рекурсивно.

Он находится на месте. Код с медиеей во вложении (в 105 сообщении). Как найти рекурсивно?

tormoz 15.09.2013 16:17

Ответ: Я новичок!
 
Цитата:

Сообщение от harmon (Сообщение 267092)
Проверил координаты всех CHILD - они все 0,0,0.

Это локальные координаты чайлда относительно родителя. Тебе нужны глобальные (поставь последний параметр в функциях в 1)
PositionEntity cam%,EntityX(pl%,1),EntityY(pl%,1),EntityZ(pl%,1), 1

harmon 15.09.2013 16:30

Ответ: Я новичок!
 
EntityParent vr1%,0
cam%=CreateCamera (vr1%)
PositionEntity cam%,EntityX(vr1%,1),EntityY(vr1%,1),EntityZ(vr1%, 1),1

Так тоже не получилось. Камера получается в середине а не на месте кубика.

tormoz 15.09.2013 17:57

Ответ: Я новичок!
 
Цитата:

Сообщение от harmon (Сообщение 267112)
EntityParent vr1%,0
cam%=CreateCamera (vr1%)
PositionEntity cam%,EntityX(vr1%,1),EntityY(vr1%,1),EntityZ(vr1%, 1),1

Так тоже не получилось. Камера получается в середине а не на месте кубика.

Значит физический центр кубика не совпадает с его геометрическим центром.
Это косяк редактора моделей

Код:

FitMesh vr1, -(MeshWidth (vr1) / 2), -(MeshHeight (vr1) / 2), -(MeshDepth (vr1) / 2), MeshWidth (vr1), MeshHeight (vr1), MeshDepth (vr1)
cam%=CreateCamera (vr1%)
PositionEntity cam%,EntityX(vr1%,1),EntityY(vr1%,1),EntityZ(vr1%,1),1


harmon 15.09.2013 18:54

Ответ: Я новичок!
 
Вложений: 1
Переделал пропал кубик.

RBK 15.09.2013 19:35

Ответ: Я новичок!
 
Проблема в особенности работы редактора: координаты всех вершин заданны от единого центра. Координаты обьектов равны нулю и не меняются.

Тебе нужно задавать координаты точкой.

tormoz 15.09.2013 20:09

Ответ: Я новичок!
 
Вот твой кубик: под землей с сбитым центром

Код:

Graphics3D 800,600,32,2
cam%=CreateCamera ()
CameraRange cam,0.1,10000


vr%=LoadAnimMesh ("11.b3d")
ScaleEntity vr%,0.1,0.1,0.1
SetBuffer BackBuffer ()
;Чтение B3D
For q%=1 To CountChildren (vr%)
        vr1%=GetChild (vr%,q%)
        vrt$=EntityName$(vr1%)
        If vrt$<>"" Then
                vrt1$=Lower$(vrt$)
                If Instr(vrt1$,"door")>0 Then;Дверь
                        ;EntityParent vr1%,0
                        t%=CopyEntity (vr1%)
                        ;FreeEntity vr1%
                End If
                If Instr(vrt1$,"geroy")>0 Then;главный герой
                        EntityParent vr1%,0
                        ;pl%=CopyEntity (vr1%,0)
                        hero=vr1
                        FitMesh vr1, -(MeshWidth (vr1) / 2), -(MeshHeight (vr1) / 2), -(MeshDepth (vr1) / 2), MeshWidth (vr1), MeshHeight (vr1),MeshDepth (vr1)
                        PositionEntity cam%,EntityX(vr1%,1),EntityY(vr1%,1),EntityZ(vr1%,1),1;Загвоздка помоему где то тут!!!!!!!!!!!!!!!!!!!!!!!!!
                End If
        End If
Next


MoveEntity cam%,0,0,-10


r%=1
u%=1

While Not KeyHit(1)
old=MilliSecs ()
TurnEntity hero,0,0,.4

If KeyDown(17) Or MouseDown(1) Then MoveEntity cam%,0,0,1;вперед
If KeyDown(31) Or MouseDown(2) Then MoveEntity cam%,0,0,-1;назад
If KeyDown(30) Then TurnEntity cam%,0,1,0;влево
If KeyDown(32) Then TurnEntity cam%,0,-1,0;вправо
r%=r%+u%
If r%=20 Then u%=-1
If r%=1 Then u%=1
MoveEntity t%,0,u%,0
RenderWorld()
Text 10,20,EntityX(cam)
Text 10,40,EntityY(cam)
Text 10,60,EntityZ(cam)
Flip
Wend


Черный крыс 15.09.2013 20:41

Ответ: Я новичок!
 
Не юзай 3Д ворлд студио, он УГ. + коверкает имена обьектам и задает единый центр ко всем префабам. ( последний недостаток можно вылечить при загрузке )
Не юзай гайлс, он к иерархии добавляет корневой пивот со всякой ересью в имени.

Юзай 3Дмакс + б3дПиплайн.

St_AnGer 02.10.2013 12:37

Ответ: Я новичок!
 
Дабы не плодить тем спрошу тут.

Дано:
текстура размером 64х64 (пиксели);
квад размером 1х1 (единица в блице);

Вопрос:
как сделать что бы на кваде эта текстура отображалась как 128х128, но в добавленой части картинка не дублировалась?

т.е. из вот этого (на уровне текстуры, а не объекта):

Код:

______
| oo |
| oo |

получилось вот так:
Код:

__________
| oo      |
| oo      |
|        |
|        |

а не так (этот результат достигается с помощью ScaleTexture (tex, .5, .5)):
Код:

__________
| oo  oo |
| oo  oo |
| oo  oo |
| oo  oo |

Функция создания квада следующая:
Код:


Function CreateQuad(XSize#=1, ZSize#=1, tBrush = 0)
        Local Mesh, Brush, Surf
        Mesh=CreateMesh()
       
        If tBrush=0
                Brush = CreateBrush(255, 255, 255)
                Surf=CreateSurface(Mesh,Brush)
        Else
                Surf=CreateSurface(Mesh,tBrush)
        End If
       
        Local t=AddVertex (Surf,-XSize,-ZSize,0,0,1)
        AddVertex (Surf,-XSize,ZSize,0,0,0)
        AddVertex (Surf,XSize,ZSize,0,1,0)
        AddVertex (Surf,XSize,-ZSize,0,1,1)
       
        AddTriangle Surf,t,t+2,t+3
        AddTriangle Surf,t,t+1,t+2
        EntityFX Mesh, 1+4
       
        Return Mesh
End Function

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

SBJoker 02.10.2013 12:52

Ответ: Я новичок!
 
ЕМНИП включить клампинг для текстуры по X и Y и задать текстурные координаты правильно.

Кирпи4 02.10.2013 13:47

Ответ: Я новичок!
 
Добавляй во флаги грузимой текстуры 16+32

St_AnGer 02.10.2013 13:59

Ответ: Я новичок!
 
Цитата:

Сообщение от Кирпи4 (Сообщение 268025)
Добавляй во флаги грузимой текстуры 16+32

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

Сейчас сделал таки ручками создание текстуры, но в таком случае теряется альфаканал изначального изображение. А если устанавливать флаги - текстура получается монотонной.

Черный крыс 02.10.2013 16:59

Ответ: Я новичок!
 
16 - ClampU ( не повторять текстуру по U-координате )
32 - ClampV ( не повторять текстуру по V-координате )

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

St_AnGer 02.10.2013 17:18

Ответ: Я новичок!
 
Цитата:

Сообщение от Diablo1909 (Сообщение 268031)
16 - ClampU ( не повторять текстуру по U-координате )
32 - ClampV ( не повторять текстуру по V-координате )

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

С проблемой клампа уже разобрался, ненадо было просто отражать текстуру способом ScaleTexture tex, -1, 1. Отражаю меш затекстуреный, и всё нормуль теперь.

Но вот возник как раз указанный косяк - т.к. текстуры нарисованы от края сразу, то возникают полосы при переносе текстуры командой PositionTexture. От них как то избавиться можно не перерисовывая туеву хучу текстур? Использование позиционирования текстур крайне необходимо.

UPD
Собственно, избавиться от этого косяка не получилось никак, не пересовывая все нужные мне текстуры по совету Diablo1909. Ну да ладно, зато теперь всё нормально.
Спасибо всем кто советовал!

Izunad 02.08.2014 22:55

Ответ: Я новичок!
 


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

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