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

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

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

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

Ответ
 
Опции темы
Старый 12.03.2012, 20:35   #1
m_512
Элита
 
Аватар для m_512
 
Регистрация: 17.04.2007
Сообщений: 1,950
Написано 1,506 полезных сообщений
(для 7,979 пользователей)
Загрузка картинок

Помогите с кодом.

Для дипломной работы нужно сделать мелкую вещь на блице.
А точнее, маленькую комнату с картинами на стене.
Картины должны грузиться из папки.

В общем, как сделать?
Есть папка, в нее нужно кидать JPG'и
Есть 15 loadmesh (модели картин)

Нужно сделать так, что бы из папки брались картинки и рандомно применялись к моделям картин, причем если картинок больше чем нужно, брались наугад из них 15 без повторений, а если меньше, в случайном порядке повторялись.
Причем файлы картинок могут называться как угодно.
(Offline)
 
Ответить с цитированием
Старый 12.03.2012, 22:48   #2
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Загрузка картинок

Надеюсь, не опоздал!
Простыня та-ды-дыщь:

Функция загрузки (она только составляет список имеющихся картинок в директории):
InputFolder имя директории
del_prev флаг - удалить ли уже прочитанную ранее инфу
возвращаемое значение - кол-во найденных (за этот вызов функции) файлов
Function InputDirRead%(InputFolder$,del_prev%=True)
	If del_prev Then Delete Each tFILE
	Local D%=ReadDir(InputFolder)
	Local FileName$
	Local FullFileName$
	Local TotalC%=0
	While True
		FileName=NextFile(D)
		If FileName="" Exit
		FullFileName=InputFolder+"\"+FileName
		If FileType(FullFileName)=1
			Local EXT3$,EXT4$
			;будем рассматривать лишь файлы с расширением длиной 3 и 4 символа
			EXT4=Upper(Right(FileName,4))
			EXT3=Upper(Right(FileName,3))
			Local EXT$=""
;туто можно настроить поддеркжу форматов - сделано топорно, ибо под жёсткое ТЗ
			If EXT3="BMP" Or EXT3="JPG" Or EXT3="PNG" Or EXT3="GIF"
				EXT=EXT3
			ElseIf EXT4="JPEG"
;меня бесит расширение JPEG, потому в информацию о файле пропишу его как JPG
				EXT="JPG"
			EndIf
;если расширение определено - информация о файле будет добавлена
			If EXT<>""
				Local F.tFILE=New tFILE
				F\FullFileName=FullFileName
				F\FileUEXT=EXT
				F\FileShortName=FileName
				F\ID=TotalC+1
				TotalC=TotalC+1
			EndIf
		EndIf
	Wend
	CloseDir(D)
	Return TotalC
End Function
Собственно экземпляр инфы о файле:
Type tFILE
	Field FullFileName$;абсолютное (с именем папки, переданной в функцию загрузки) имя файла
	Field FileUEXT$;расширение файла (в верхнем регистре)
	Field FileShortName$;имя файла (с расширением)
	Field ID%;индекс файла при чтении (после перемешивания первый прочитанный файл может оказаться в конце)
End Type
это тоже понадобиться (сюда мы потом переместим структуры для более удобной работы)
Dim LIST.tFILE(0)
После работы - очищаем информацию
Function InputDirDeRead()
	For f.tFILE=Each tFILE
		Delete f
	Next
	Dim LIST(0)
End Function
Функция выгрузки считанной инфы в массив, для работы (перемешивание)
cnt -кол-во объектов (чтобы их не пересчитывать)
Function tFILE2LIST(cnt%)
	Dim LIST(cnt)
	Local i=1
	For f.tFILE=Each tFILE
		LIST(i)=f
		i=i+1
	Next 
End Function
После выгрузки в массив, вызываем эту функцию для перемешивания содержимого
cnt -кол-во объектов
Function LISTrandomize(cnt%)
	If cnt<2 Return
	Local tmp.tFILE
	Local factor%=cnt*2.0;количество перестановок - побирается на вкус; у меня - кол-во файлов х 2
	
	Local A%=1;первый файл будет гарантировано участвовать в перемешивании
	Local B%=Rand(1,cnt);практика показала, что 1-ый файл слишком часто оставался нетронутым
	For i=1 To factor
;такая модель перестановок может (с уменьшающейся вероятностью вообще ничего не переставить)
; см подробнее: http://forum.boolean.name/showthread.php?t=15658
		tmp=LIST(A)
		LIST(A)=LIST(B)
		LIST(B)=tmp
		A%=Rand(1,cnt)
		B%=Rand(1,cnt)
	Next
End Function
Получить файл
I -индекс текущего файла
Function GetNextFile.tFILE(I%)
;думаешь: чо за тупая функция? просто у меня файл перед взятием его получал дополнительную информацию в свои поля
	Return LIST(I)
End Function
Демо:
Dim LIST.tFILE(0)
Global TCnt=InputDirRead("Pic");загрузим информацию о файла в папке Pic
TCnt=TCnt+InputDirRead("Pic2",False);догрузим информацию из папки Pic2
;...

Global ReadIndx%=TCnt+1;текущий читаемый индекс
tFILE2LIST(TCnt);выгружаем информацию в массив (вернее - указатели* сохраняются в массив для удобства: удалять экземпляры нельзя пока)
;...

While True;некоторый цикл получения случайных картинок
	If ReadIndx>TCnt;если уже перебрали весь список - перемешаем его заново и начнём сначала
		LISTrandomize(TCnt)
		ReadIndx=1
	EndIf
	Local file.tFILE=GetNextFile(ReadIndx);получить указатель* на структуру, содержащую информацию о файле
ReadIndx=ReadIndx+1
;...
Wend
InputDirDeRead();очистим
Собственно, выполнишь 15 итераций цикла из демки. На каждой итерации грузишь файл
Loadtexture(file\FullFileName)
и накладываешь на N-ый меш.
И да:
Нужно сделать так, что бы из папки брались картинки и рандомно применялись к моделям картин, причем если картинок больше чем нужно, брались наугад из них 15 без повторений, а если меньше, в случайном порядке повторялись.
Причем файлы картинок могут называться как угодно.
Причём повторяться (в случае "а если меньше") они будут минимальное число раз. Т.е. если у тебя 14 картинок (а мешей - 15), то повторений будет 2 (на двух мешах одна и та же текстура).

Ну - а у меша, сделать именованный полигон, с корректно выставленными uv координатами. Загрузить меш, раскопировать его на 15 объектов - всё очевидно.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Эти 9 пользователя(ей) сказали Спасибо impersonalis за это полезное сообщение:
Arles (15.03.2012), Gector (11.06.2012), Harter (13.03.2012), LLI.T.A.L.K.E.R. (13.03.2012), mauNgerS (13.03.2012), m_512 (12.03.2012), m_s (18.05.2012), Randomize (13.03.2012), St_AnGer (12.03.2012)
Старый 12.03.2012, 23:23   #3
m_512
Элита
 
Аватар для m_512
 
Регистрация: 17.04.2007
Сообщений: 1,950
Написано 1,506 полезных сообщений
(для 7,979 пользователей)
Ответ: Загрузка картинок

Супер! Огромное спасибо!
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
impersonalis (12.03.2012)
Старый 12.03.2012, 23:28   #4
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Загрузка картинок

Сообщение от m_512 Посмотреть сообщение
Супер! Огромное спасибо!
ReadIndx=ReadIndx+1
в демо забыл дописать. теперь (обновил пост) должно работать
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
m_512 (12.03.2012)
Старый 13.03.2012, 00:37   #5
Harter
Бывалый
 
Аватар для Harter
 
Регистрация: 03.11.2008
Адрес: Украина, Днепропетровск
Сообщений: 871
Написано 554 полезных сообщений
(для 2,520 пользователей)
Ответ: Загрузка картинок

impersonalis, респект!
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
impersonalis (13.03.2012)
Старый 08.05.2012, 11:23   #6
Алекс_Нос
AnyKey`щик
 
Регистрация: 08.05.2012
Сообщений: 4
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Загрузка картинок

А можно ли еще и узнать размер картинки прежде чем она загрузится? Если кто знает подскажите, буду благодарен.
(Offline)
 
Ответить с цитированием
Старый 11.06.2012, 02:06   #7
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Загрузка картинок

2m_512
ну и где рассказ про диплом? Оценка, демонстрация приложения?
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 11.06.2012, 03:16   #8
radiobutton
Бывалый
 
Регистрация: 16.09.2011
Сообщений: 863
Написано 257 полезных сообщений
(для 546 пользователей)
Ответ: Загрузка картинок

защиты через полторы недели.
(Offline)
 
Ответить с цитированием
Старый 11.06.2012, 03:38   #9
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Загрузка картинок

Сообщение от radiobutton Посмотреть сообщение
защиты через полторы недели.
Откуда информация?
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 11.06.2012, 03:57   #10
radiobutton
Бывалый
 
Регистрация: 16.09.2011
Сообщений: 863
Написано 257 полезных сообщений
(для 546 пользователей)
Ответ: Загрузка картинок

Сообщение от ABTOMAT Посмотреть сообщение
Откуда информация?
у меня так
(Offline)
 
Ответить с цитированием
Старый 11.06.2012, 14:14   #11
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Загрузка картинок

[s]Значит у всех так.[/s]
Неадекватность шкалит всё выше и выше..
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Nex (11.06.2012)
Старый 11.06.2012, 15:00   #12
Gector
Легенда
 
Аватар для Gector
 
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений
(для 5,072 пользователей)
Ответ: Загрузка картинок

Сообщение от radiobutton Посмотреть сообщение
у меня так
А у нас в инсте защита с прошлого месяца.
__________________
Ибо как сказал Бгдн:
(Offline)
 
Ответить с цитированием
Старый 11.06.2012, 21:41   #13
radiobutton
Бывалый
 
Регистрация: 16.09.2011
Сообщений: 863
Написано 257 полезных сообщений
(для 546 пользователей)
Ответ: Загрузка картинок

Сообщение от MoKa Посмотреть сообщение
[s]Значит у всех так.[/s]
Помоему логично, что раз я написал, что "у меня так", значит имел ввиду, что у других может и не так. Даже если и не имел в виду, то не отрицал.

Пост до этого же, можно трактовать, как "Ну как бы рано еще, не у всех защиты прошли, а если и прошли, то это дело еще и отметить нада, а потом уже на форуме постить."

Неадекватность шкалит всё выше и выше..
Но тем не менее твои выводы основываются большей частью на субъективном мнении об авторе постов. Будь объективен. Смотри шире и глубже.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
moka (11.06.2012)
Старый 14.06.2012, 20:46   #14
Alex__Noc
Нуждающийся
 
Регистрация: 14.06.2012
Сообщений: 66
Написано 6 полезных сообщений
(для 10 пользователей)
Ответ: Загрузка картинок

Ну и ???
А можно ли узнать размер картинки прежде чем она загрузится?????????????????????????????????????
(Offline)
 
Ответить с цитированием
Старый 14.06.2012, 20:51   #15
Dzirt
Элита
 
Аватар для Dzirt
 
Регистрация: 16.01.2008
Сообщений: 1,800
Написано 958 полезных сообщений
(для 3,833 пользователей)
Ответ: Загрузка картинок

Сообщение от Alex__Noc Посмотреть сообщение
Ну и ???
А можно ли узнать размер картинки прежде чем она загрузится?????????????????????????????????????
Мужик, почини клавиатуру.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


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