forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Проекты на Blitz3D (http://forum.boolean.name/forumdisplay.php?f=14)
-   -   Кировск 3d - карта города (http://forum.boolean.name/showthread.php?t=2957)

Chuma 16.03.2007 12:12

Кировск 3d - карта города
 
Вложений: 2
Итак я решил вынести на обсуждение свой проект, который, в свою очередь я в свободное от семейных и рабочих забот разрабатываю уже 4-й месяц... Это далеко не финальная версия, это своеобразный шаблонный проект, возможно не сложный для "Гуру", но для меня он товольно труден и интересен.

Вступление.
Это - НЕ ИГРА. Это моя попытка применить знания, полученные путем изучения блитца и общения на форумах с грамотными людьми в какую-то законченную форму. Собственно, я пришел к мнению, что изучать языки надо именно через какой-нибудь свой проект, постоянно сталкиваясь с трудностями и успешно (или не очень) их преодолевая.Таким образом я просто физически осознаю - что мой, отнюдь не умнеющий с годами мозг получает хорошую интеллектуальную встряску. И это есть хорошо...

О проекте.
Зародился он давольно неожиданно даже для меня. После того как я забросил блиц почти на 3 года, растеряв и без того куцые знания, я както наткнулся на одном форуме посвященном разработке сайтов с человеком, чье имя показалось мне знакомым - Serge Petrowski (эх... тот самый Барлог, офигеть!). Пойдя по линкам из его инфы я заинтересовался как там старик Блитц (очень огорчило то, что накрылся старый форум). Ну а там пошло поехало...
Сразу захотелось сделать свой варик (блин наверное это болезнь всех новичков =))... Но через пару недель пришлось трезво переоценить свои возможности, и появилась смутная идея что делать... Карта небольшого города... Например такого где я живу. Тем паче что работая в проектно-строительной организации я неплохо разбираюсь в кадах и 3д моделировании в принципе.
И понеслась...

Итак - 3д карта конкретного города (г. Кировск Ленинградской обл.), с выводом ВСЕХ адресов домов, названий улиц. С визуальный разделением зданий на жилые и промышленные, магазины и административные здания. Поиск по адресам. В потенциале - вывод информации по всем магазинам/организациям и т.п. Впрочем смотрите сами.

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


Вывод
Спасибо большое форуму булеан, и блиц.пп за порой жесткие, но грамотные комментарии и ответы. Надеюсь на Вашу помошь и далее.
Отдельная благодарность Холиделу - который "вел" меня все начало проекта.

Пожалуйста, напишите Ваши отзывы и предложения - обещшаю присмотреться к Вашему мнению. Этой мой первый столь "трудоемкий" проект - хотелось бы понять его и свой потенциал.

Chuma 16.03.2007 12:32

Re: Кировск 3d - карта города
 
ЗЫ. управление -
w,a,s,d или курсоры + q,e (стрейф). Маусскрол - выше/ниже.
Пробел - поиск.
f1 - скриншот

Chrono Syndrome 16.03.2007 13:01

Re: Кировск 3d - карта города
 
А что, прикольно .

Chuma 16.03.2007 13:07

Re: Кировск 3d - карта города
 
Цитата:

Сообщение от Chrono Syndrome
А что, прикольно . Только, это, небольшое замечание:
;)

шИТ... исправлю ессно.

Diplomat 16.03.2007 14:28

Re: Кировск 3d - карта города
 
Автор так извинялся за "первопроЭктность" разработки, что я внутренне настроился на нечто условно работоспособное и на вид среднее между плохим и ужасным.

Потому нечуждая спецэффектам и дизайну картинка, мягкое управление камерой и приятная цветовая гамма стали весьма приятным сюрпризом.
Выглядит всё вполне достойно.
Общие принципы управления также вполне сбалансированы, понимаются нараз и ИМХО вполне удобны.

Багов замечено немного, и они некритические.
1. Первый- это пресловутая очепятка в лаунчере.
2. Далее, сразу после запуска камера у меня "вьезжала" в реющий над городом баннер. Обрезки полигонов на вьюпорте смотрятся не очень. При запуске нужно бы размещать камеру подальше. А чтоб избежать "пролёта" сквозь баннер- плавно скрывать его при приближении, к примеру АвтоФейдом.
3. При движении назад и "стрейфе", камера поворачивается по ходу движения. А закончив движение- норовит снова повернуться к прежней стороне света. Эти ёё рывки заставляют мгновенно потерять ориентацию в пространстве. "Нет уж, барин! Стрейф, так стрейф!" искаж.(с)
4. При "наборе высоты" ИМХО разумно повернуть камеру вниз. Этот классический приём во-первых позволит пользователю выбирать удобный ракурс, а во-вторых при полёте на пределе высоты сейчас видно многовато неба и маловато города.
5. Поднимаемся на максимум, кликаем по любому домику... камера радостно летит к нему, теряет домик из виду, ибо находится слишком высоко и начинает дёргаться в панике, безуспешно пытаясь вновь его отыскать. )
6. Кликаем по синему обелиску в центре города (ул.Новая). Камера в ужасе улетает за город и впечатывается в скайсферу. Оторвать ёё оттуда довольно проблемматично.)
7. В правом-нижнем углу что-то происходит. Кажется, это миникамера с облётом выбранного обьекта. ИМХО- лишнее. Тем более, она закрывает собой какой-то логотип.

Единственным замеченным обьективным недостатком программы является ёё невысокая производительность. На 1024х768х32, мой ноут 1400МГц / 1Гб / встроенный Радий-9000 ИГП выдавал от 15 до 30 ФПС.
Склонившись перед спецификой Блица можно было бы повысить производительность раза в два:
-Уменьшить количество активных обьектов в сцене (отслеживать клик не по дому, а по координатам точки/узла/квадрата/фигуры на карте)
-Если планируется работа с бОльшими городами- использовать отсечения невидимых районов.
-Отказаться от прорисовки 2Д: желательно перейти к 2Д-через-3Д.
-Если используется больше одной камеры (миниэкран облёта следан камерой или копированием модельки?)- убрать все, кроме одной.
-Если для отражений используется миррор- заменить его прозрачным плейном и вытянуть домики вниз...

P.S. Ессно, я не императивлю. Всё вышесказанное- моё ИМХО. Причём, не сочти за критиканство: проделана большая работа, причём конечный продукт выглядит законченным и достойным. Работа оказалась 100% не дурной. А мелкие шероховатости не трудно загладить.

Chuma 16.03.2007 15:34

Re: Кировск 3d - карта города
 
Спасибо.. Я вообще-то довольно сильно переживал за то что меня сейчас будут рвать как грелку. =)

А вообще спасибо за багхантинг и рац. предложения - сам уже себя исчерпал - так что за хорошие идеи буду "плюсовать" не щадя живота.

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

По поводу стрейфа - мой косяк. При выделении объекта камера "едет" к нему - но на любую управляющую кнопку движение "сбрасывается... Только вот про кнопки стрейфа я забыл - сделаю, спс.

С "обелиском" (ГСМ вышка) - тоже мне понятно - просто карта (новые дома, элементы, улици) наполняется параллельно с проектом - и я часто всегда забываю добавлять работу с новыми объектами в код. В идеале хочу выработать определенный формат подзагружаемой карты и объектов из внешнего файла - это сразу позволит добавлять любому человеку свои города. Ну это конечно теория.

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

Цитата:

-Если для отражений используется миррор- заменить его прозрачным плейном и вытянуть домики вниз...
Гм, убрать хочу нафик - идея порочна (в принципе кнопка есть) - просто осталась еще со времени работы с несколькими объектами...
Хотел сделать тень (нединам. хотя бю), но знаний пока не хватает. Как и текстурированием домов (я еще не научился работать ни с типами).

Ну короче будет чем занять себя на выходных. А вообще, самое трудное - это ездить по городу и записывать все адреса - я месяц как проклятый вечерами ходил на прогулку. Потом стало проще - появлось комьюнити в локалке - оно активно помогает и поддерживает меня =)

ЗЫ. ПРодукт не конечный... до версии 1.0 уйма еще времени и нервов =))

HolyDel 16.03.2007 18:16

Re: Кировск 3d - карта города
 
Молодец!
Мне нравится! Тока тормозит у мну сильно, это конечно понятно (GeForce2 и в аврике GeForce2), но все же неприятно. 4 ФПС всего.
Diplomat перечислил (по моему все) моменты которые можно использовать для повышения производительности.
Жду новых версий.

Horror 18.03.2007 12:43

Re: Кировск 3d - карта города
 
ПРикольно1 ещеб простенькие текстурки (чтоб на дома было похоже) и можно прям по городу "погулять" не приезжая к вам в гости...

почемуто когда тыкаеш на зеленые объекты (типо парки) камера к ним не приезжает как к домам а протсто в одну и туже точку возвращаются
-может пивот в максе не в ценртре? а так очень понравилось!

Chuma 18.03.2007 16:11

Re: Кировск 3d - карта города
 
Такс, уравление ПОЛНОстью пофиксено..
1. вопрос остался, Я вот все же "превьюху" модели хочу доделать - но т.к. модели разного размера - может кто посоветует как их засовывать/масштабировать что бы они не вылазили за пределы окна минипревью? Камеру отодвигать? или можеть кто функцию писал?



Цитата:

ПРикольно1 ещеб простенькие текстурки (чтоб на дома было похоже) и можно прям по городу "погулять" не приезжая к вам в гости...

почемуто когда тыкаеш на зеленые объекты (типо парки) камера к ним не приезжает как к домам а протсто в одну и туже точку возвращаются
-может пивот в максе не в ценртре? а так очень понравилось!
Спасибо, Ваши отзывы, Господа очень поднимают мой (а)моральный дух!
- Некоторые объекты действитльно не имеют нормальных координат, все потихоньку фиксится.
- Некоторые объекты еще не имеют описания - жто тоже фиксится.
- завтра постараюсь выложить новый экзешник (дабы не катать опять 2 мб)

Chuma 19.03.2007 16:30

Re: Кировск 3d - карта города
 
Вложений: 2
екзешник без пака (rar, 500 кб)

Пофиксил
- косяки с управлением (вроде все)
- полупрозрачность баннеру добавлена...

moka 20.03.2007 01:48

Re: Кировск 3d - карта города
 
Можно масштабировать их всех пропорционально на заданный размер, я как-то писал эту функцию, вот попробую её сдесь в броузере:
[blitz]Function ResizeMesh(Mesh,w#,h#,d#,proporcional=0)
mw#=MeshWidth(Mesh)
mh#=MeshHeight(Mesh)
md#=MeshDepth(Mesh)

Select proporcional
Case 1
ScaleMesh Mesh,mw/w,mw/w,mw/w
Case 2
ScaleMesh Mesh,mh/h,mh/h,mh/h
Case 3
ScaleMesh Mesh,md/d,md/d,md/d
Default
ScaleMesh Mesh,mw/w,mh/h,md/d
End Select

End Function[/blitz]
Надеюсь всё правельно.
ResizeMesh(Мэшь,Ширина,Высота,Длина,Пропорциональн о(если 0 то нет, или же, если 1 то по ширине, 2 по высоте, 3 по длине))

Просто задаём размер, например если у тебя 1 единица = 1 метр, то зная размеры здания, ты просто можешь их задать, и мэшь отмаштабируется в нужный размер.

Внимание функция неправильна! В 14 посте исправлена (в аттаче)

Chuma 20.03.2007 11:51

Re: Кировск 3d - карта города
 
Спасибо! Попробую - отпишусь!

moka 21.03.2007 00:13

Re: Кировск 3d - карта города
 
Приношу извенения, что постю сдесь не совсем по теме, но вот относительно хранения ресурсов, вы используете Паки, можно получить об этом информацию? Нужен ли дополнительный софт, какие приемущества этого видахранения, сложно ли вытянуть ресурсы?

Chuma 21.03.2007 12:39

Re: Кировск 3d - карта города
 
Цитата:

Сообщение от MoKa
Приношу извенения, что постю сдесь не совсем по теме, но вот относительно хранения ресурсов, вы используете Паки, можно получить об этом информацию? Нужен ли дополнительный софт, какие приемущества этого видахранения, сложно ли вытянуть ресурсы?

Собственно моя тяга к пакерам связана лишь любовью к "изящности" хранения ресурсов - ненавижу огромные кучи файла посоле инсталляции.

Много всяких перепробовал остановился на классическом Терабит Датапакер. В принципе, найти его и получить информацию о нем легко - но все же:
Поддерживает шифрование, пакование в exe и т.п. Работает шустро - темповый каталог можно указывать самому.
Инициализируется легко 3 строчки

Код:

PakOutputDir "" ; This can be set anywhere, a good example would be "C:\"
PakInit "Data.Pak", $********, "TEMP", $*; Cut And Paste this from the GUI PakMaker
PakBulkOverWrite = False ; Set this to True when in Development / False when Released

Из доп файлов - только ГУЕвый пакер и длл (нужны только для пака). На файлах ресурсов размером менее 3 мб я не успеваю отследить появление темпа - что, несомненно, позитивно...
Для пущей надежности теоретически возможных свих дальнейших проектов коммерческой направленности попытался развить эту тему - http://www.boolean.name/showthread.php?t=3129 (Если вдруг все-таки ктото решит сделать "подменяемые ресурсы" - поделитесь сорцами, ок?)

ЗЫ. MoKa, вопрос по превьюхе и данному тобою сорце.
Для начала, как у меня сделано - если выбираем модель, то копируем ее во вторую камеру. ПРименив твой код - у меня масштабируется оригинал... попробую набросать код:
Код:

Graphics3D 640,480,16,2
cam=CreateCamera()
cam2=CreateCamera()
PositionEntity cam2,0,-99950,0
CameraViewport cam2,GraphicsWidth()-100,GraphicsHeight()-100,100,100
CameraClsColor cam2,150,150,150

l=CreateLight()
sp =CreateCube()
PositionEntity sp,0,0,20


EntityPickMode sp,2
Repeat
If MouseHit(1)
      ent=CameraPick(cam,MouseX(),MouseY())
        If ent name$=EntityName(sp)
                    If showmodel=0 Then name$=EntityName(sp):showmodel=CopyEntity(sp):

Else
If showmodel<>0 Then FreeEntity showmodel:showmodel=0:
              EndIf
                UpdateWorld

                If showmodel=0
CameraProjMode cam2,0

Else

CameraProjMode cam2,1
PositionEntity showmodel,-100,-100000,0
TurnEntity showmodel,0,-1,0
EntityAlpha showmodel,0.2
PointEntity cam2,showmodel
ResizeMesh(showmodel,1,1,1,proporcional=0)
EndIf
       
       
        RenderWorld tween
        Flip

Forever


Function ResizeMesh(Mesh,w#,h#,d#,proporcional=0)
mw#=MeshWidth(Mesh)
mh#=MeshHeight(Mesh)
md#=MeshDepth(Mesh)

Select proporcional
Case 1
ScaleMesh Mesh,mw/w,mw/w,mw/w
Case 2
ScaleMesh Mesh,mh/h,mh/h,mh/h
Case 3
ScaleMesh Mesh,md/d,md/d,md/d
Default
ScaleMesh Mesh,mw/w,mh/h,md/d
End Select

End Function

Вроде должен работать... (блитца под рукой нет - подрехтовал какойто исходник в браузере)
Вопрос к профессионалам - что я делаю не так? =)) Ведь не может же работа с "копиентитированным" обектов влиять на оригинал, так?

moka 21.03.2007 22:52

Re: Кировск 3d - карта города
 
Вот я поправил код, да и в функции были ошибки.
Странно, только сейчас понял, оказывается, если копировать энтити, и применять операции к копированному мэшу, то и к источнику они применятся тоже, как-будто привязаны друг к другу, пытался убрать Пивот, ничего не помогло =). Выходит копируя энтити, мы не создаём новый мэшь, а как-бы рендерим с другими свойствами энтити тот же мэшь? :dontknow: :)


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

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