Elite Games - Свобода среди звезд!
.
ВНИМАНИЕ!
Наша конференция посвящена космической тематике и компьютерным играм.
Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!

  » GIMP В процессе осваивания | страница 3
Конференция предназначена для общения пилотов. Для удобства она разделена на каналы, каждый из которых посвящен определенной игре. Пожалуйста, открывайте темы только в соответствующих каналах и после того, как убедитесь, что данный вопрос не обсуждался ранее.

Поиск | Правила конференции | Фотоальбом | Регистрация | Список пилотов | Профиль | Войти и проверить личные сообщения | Вход

   Страница 3 из 3
На страницу: Пред.  1, 2, 3 | Все страницы
Поиск в этой теме:
Канал творчества: «GIMP В процессе осваивания»
XArgon
 1425 EGP


Ведущий раздела
Рейтинг канала: 12(1752)
Репутация: 395
Сообщения: 4153
Откуда: Интернеты
Зарегистрирован: 06.08.2005
Текстуры никакой нет. Всё "руками". Улыбка Свечение - фильтр Supernova. Плюс, опять таки, руки - Dodge и Burn.
К слову, картинку уже давно доработал, разнообразил звёзды, поработал над освещением. Но пока не выкладывал, берёг для запланированной работы. Хы...
    Добавлено: 21:48 21-07-2010   
Варсик
 545 EGP


Рейтинг канала: 3(35)
Репутация: 117
Сообщения: 4041
Откуда: Москва
Зарегистрирован: 22.12.2002
Гм... Научиться что-ли... А то я только "техник". Мне много и сразу...
_________________
WARNING: By reading this post you accept that this post is genius.
    Добавлено: 21:47 22-07-2010   
Варсик
 545 EGP


Рейтинг канала: 3(35)
Репутация: 117
Сообщения: 4041
Откуда: Москва
Зарегистрирован: 22.12.2002
Апну темку...
Набросал скриптик. Пока простой.
Работает так: Файл -> Создать -> Warstone -> Planet

- Убрал симметричность.
- Добавил рельеф
- Добавил цвет (как вариант - автогенерация градиента)
- {1.04} {28.07.2011} Переделал генерацию рельефа, теперь нету странной черты, вокруг планеты.
- {1.05} {29.07.2011} Скорость генерации базовой текстуры планеты увеличена ценой некоторой повторяемости, но что-бы ее найти надо... Сильно присматриваться на разрешении 2048+. Да, старый вариант остался. В последствии в основном скрипте будет настройка ("Качественно", "Быстро", "Быстрее бле@дь!!", "ФТРИСТА РАЗ!!!") Улыбка)
- {1.05} {29.07.2011} Добавил еще один метод "Планетизации" через линзу. Он требует гораздо меньше ресурсов (вызывает генерацию текстуры планеты 1 раз, а не 2 и постобработка заметно проще) и работает гораздо быстрее, но, субъективно, результат хуже. То есть такой метод можно использовать для генерации кучи маленьких (128, ну 256) планеток. Более детализированные лучше делать старым способом.
 Code v1.05   (кликните здесь для просмотра)
Код:
(define (warstone-surface-texture inImage inDrawable inSimply inNormalize) (
   let* (
      (drWidth (car (gimp-drawable-width inDrawable) ) )
      (drHeight (car (gimp-drawable-height inDrawable) ) )
      (dSize (if (< drWidth drHeight) drWidth drHeight ) )
      (img (car (gimp-image-new dSize dSize RGB ) ) )
      (baseTexture (car (gimp-layer-new img dSize dSize RGB-IMAGE "Base terrain" 100 NORMAL) ) )
      (topTexture (car (gimp-layer-new img dSize dSize RGB-IMAGE "Top terrain" 100 NORMAL) ) )
      (bottomTexture (car (gimp-layer-new img dSize dSize RGB-IMAGE "Bottom terrain" 100 NORMAL) ) )
      (topSTexture (car (gimp-layer-new img dSize dSize RGB-IMAGE "Top sub terrain" 100 NORMAL) ) )
      (bottomSTexture (car (gimp-layer-new img dSize dSize RGB-IMAGE "Bottom sub terrain" 100 NORMAL) ) )
      (maskTexture)
   )

   (gimp-image-add-layer img baseTexture 0)
   (plug-in-solid-noise 1 img baseTexture 1 0 (rand) 2 0.5 0.5)
   (gimp-levels-stretch baseTexture)
;   (plug-in-gauss 1 img baseTexture (* (/ dSize 100) 2) (* (/ dSize 100) 2) 1)
   ; Base terrain

   (set! maskTexture (car (gimp-layer-copy baseTexture 1)))
   (gimp-image-add-layer img maskTexture 0)
   (gimp-posterize maskTexture 2)
   (plug-in-gauss 1 img maskTexture (* (/ dSize 100) 20) (* (/ dSize 100) 20) 1)
   ; Mask for terrain


   (gimp-image-add-layer img topTexture 0)
   (gimp-image-add-layer img topSTexture 1)
   (plug-in-solid-noise 1 img topTexture 1 0 (rand) 15 5 5)
   (if inSimply (gimp-edit-copy topTexture))
   (gimp-context-set-foreground '(255 255 255))
   (gimp-drawable-fill topSTexture FOREGROUND-FILL)
   (gimp-layer-set-opacity topTexture 50)
   (set! topTexture (car (gimp-image-merge-down img topTexture CLIP-TO-IMAGE) ) )
   (gimp-layer-add-mask topTexture (car (gimp-layer-create-mask maskTexture ADD-COPY-MASK) ) )
   (gimp-layer-remove-mask topTexture MASK-APPLY)
   ; Land terrain
   
   (gimp-image-add-layer img bottomTexture 1)
   (gimp-image-add-layer img bottomSTexture 2)
   (if (not inSimply) (plug-in-solid-noise 1 img bottomTexture 1 0 (rand) 15 5 5)
      (begin
         (gimp-floating-sel-attach (car (gimp-edit-paste bottomTexture TRUE) ) bottomTexture )
         (gimp-drawable-transform-rotate-simple bottomTexture ROTATE-180 TRUE 0 0 TRUE)
      )
   )
   
   (gimp-context-set-foreground '(0 0 0))
   (gimp-drawable-fill bottomSTexture FOREGROUND-FILL)
   (gimp-layer-set-opacity bottomTexture 50)
   (set! bottomTexture (car (gimp-image-merge-down img bottomTexture CLIP-TO-IMAGE) ) )
   (gimp-invert maskTexture)
   (gimp-layer-add-mask bottomTexture (car (gimp-layer-create-mask maskTexture ADD-COPY-MASK) ) )
   (gimp-layer-remove-mask bottomTexture MASK-APPLY)
   ; Sea terrain
   
   (gimp-image-remove-layer img maskTexture)
   (set! topTexture (car (gimp-image-merge-down img topTexture CLIP-TO-IMAGE) ) )
   (set! topTexture (car (gimp-image-merge-down img topTexture CLIP-TO-IMAGE) ) )

   (if (= inNormalize TRUE) (gimp-levels-stretch topTexture) )
   
   (gimp-edit-copy topTexture)
   (gimp-floating-sel-attach (car (gimp-edit-paste inDrawable TRUE) ) inDrawable )
   (gimp-image-delete img)
   (gimp-displays-flush)
))

(define (warstone-util-generate-gradient)
   (let*   (
         (grad (car (gimp-gradient-new "Dummy") ) )
         (leftColor (cons (rand 255) (cons (rand 255) (cons (rand 255) '()))))
         (rightColor (cons (rand 255) (cons (rand 255) (cons (rand 255) '()))))
         (colorVal 0)
         (middleColor '())
      )
      (set! colorVal (- 255(/ (- 255 (/ (+ (car leftColor) (car rightColor)) 2)) 2)))
      (set! middleColor (cons colorVal middleColor))

      (set! colorVal (- 255(/ (- 255 (/ (+ (car (cdr leftColor)) (car (cdr leftColor))) 2)) 2)))
      (set! middleColor (cons colorVal middleColor))

      (set! colorVal (- 255(/ (- 255 (/ (+ (car (cdr (cdr leftColor))) (car (cdr (cdr leftColor)))) 2)) 2)))
      (set! middleColor (cons colorVal middleColor))

      (gimp-context-set-gradient grad)

      (gimp-gradient-segment-range-split-uniform grad 0 0 2)
      (gimp-gradient-segment-set-left-color grad 0 leftColor 100)
      (gimp-gradient-segment-set-right-color grad 0 middleColor 100)
      (gimp-gradient-segment-set-left-color grad 1 middleColor 100)
      (gimp-gradient-segment-set-right-color grad 1 rightColor 100)
      (gimp-context-get-gradient)
   )
)

(define (warstone-clouds inImage inLayer)
   (let*
      (
         (sizeH (car (gimp-drawable-height inLayer) ) )
         (sizeW (car (gimp-drawable-width inLayer) ) )
         (img (car (gimp-image-new sizeW sizeH RGB ) ) )
         (baseL (car (gimp-layer-new img sizeW sizeH RGB-IMAGE "Top sub terrain" 100 NORMAL) ) )
         (maskL 0)
         (layers 15)
         (i 0)
      )
      (gimp-image-add-layer img baseL 0)
      (plug-in-solid-noise 1 img baseL 1 0 (rand) 2 1 1)
      (while (< i layers)
         (set! i (+ i 1) )
         (set! maskL (car (gimp-layer-new img sizeW sizeH RGB-IMAGE "Top sub terrain" 50 OVERLAY-MODE) ) )
         (gimp-image-add-layer img maskL 0)
         (plug-in-solid-noise 1 img maskL 1 0 (rand) 2 i i)
         (gimp-layer-add-mask baseL (car (gimp-layer-create-mask maskL ADD-COPY-MASK) ) )
         (gimp-layer-remove-mask baseL MASK-APPLY)
         (set! baseL maskL)
         (gimp-drawable-transform-flip-simple baseL ORIENTATION-HORIZONTAL TRUE 1 TRUE)
      )

      (set! baseL (car (gimp-image-merge-visible-layers img CLIP-TO-IMAGE) ) )
      (gimp-edit-copy baseL)
      (gimp-floating-sel-attach (car (gimp-edit-paste inLayer TRUE) ) inLayer )
      (gimp-image-delete img)
      (gimp-displays-flush)
   )
)

(define (warstone-util-sphere-emboss inImage inLayer)
   (let*
      (
         (oldWidth (car (gimp-drawable-width inLayer) ) )
         (workSel 0)         
      )
      (plug-in-polar-coords 1 inImage inLayer 100 180 0 0 0)
      (gimp-image-resize inImage (+ oldWidth 64) (car (gimp-drawable-height inLayer) ) 32 0)
      (gimp-layer-resize inLayer (+ oldWidth 64) (car (gimp-drawable-height inLayer) ) 32 0)
      (gimp-rect-select inImage 32 0 32 (car (gimp-drawable-height inLayer) ) CHANNEL-OP-REPLACE FALSE 0)
      (gimp-edit-copy inLayer)
      (set! workSel (car (gimp-edit-paste inLayer FALSE) ) )
      (gimp-layer-set-offsets workSel (+ oldWidth 32) 0)
      (gimp-floating-sel-attach workSel inLayer)

      (gimp-rect-select inImage oldWidth 0 32 (car (gimp-drawable-height inLayer) ) CHANNEL-OP-REPLACE FALSE 0)
      (gimp-edit-copy inLayer)
      (set! workSel (car (gimp-edit-paste inLayer FALSE) ) )
      (gimp-layer-set-offsets workSel 0 0)
      (gimp-floating-sel-attach workSel inLayer)

      (gimp-selection-none inImage)
    
      (plug-in-emboss 1 inImage inLayer 30 45 5 FALSE)
      (gimp-image-resize inImage oldWidth (car (gimp-drawable-height inLayer) ) -32 0)
      (gimp-layer-resize inLayer oldWidth (car (gimp-drawable-height inLayer) ) -32 0)
      (plug-in-polar-coords 1 inImage inLayer 100 180 0 0 1)

      (gimp-displays-flush)

   )
)

(define (warstone-planet inSize inTexture inPlanetize inGradient inGradientRandom)
   (let*
      (
         (mapSize (* inSize 2) )
         (endSize (+ inSize 16) )
         (deltaSize (/ (- endSize mapSize) 2) )
         (img (car (gimp-image-new mapSize mapSize RGB) ) )
         (upperTexture (car (gimp-layer-new img mapSize mapSize RGB-IMAGE "Upper Texture" 100 NORMAL) ) )
         (lowerTexture (car (gimp-layer-new img mapSize mapSize RGB-IMAGE "Lower Texture" 100 NORMAL) ) )
         (maskTexture)
         (surfGradient inGradient)
      )

      (gimp-context-push)

      (if (= inGradientRandom 1) (set! surfGradient (car (warstone-util-generate-gradient))))

      (if (= inPlanetize 0)
         (begin
            (gimp-image-add-layer img upperTexture 0)
            (gimp-image-add-layer img lowerTexture 1)
            (warstone-surface-texture img lowerTexture (= inTexture 1) FALSE)
            (warstone-surface-texture img upperTexture (= inTexture 1) FALSE)

            (plug-in-polar-coords 1 img upperTexture 100 180 0 1 0)
            (gimp-drawable-transform-scale-default upperTexture 0 0 mapSize (- mapSize (/ mapSize 4) ) 1 TRANSFORM-RESIZE-ADJUST)

            (plug-in-polar-coords 1 img lowerTexture 100 180 0 0 0)
            (gimp-drawable-transform-scale-default lowerTexture 0 (/ mapSize 4) mapSize mapSize 1 TRANSFORM-RESIZE-ADJUST)

            (set! maskTexture (car (gimp-layer-create-mask upperTexture ADD-WHITE-MASK) ) )
            (gimp-layer-add-mask upperTexture maskTexture )
            (gimp-context-set-foreground '(255 255 255) )
            (gimp-context-set-background '(0 0 0) )
            (gimp-edit-blend maskTexture FG-BG-RGB-MODE NORMAL-MODE GRADIENT-LINEAR 100 0 REPEAT-NONE 0 0 0 0 1 0 (/ mapSize 4) 0 (* (/ mapSize 4) 3) )

            (set! upperTexture (car (gimp-image-merge-visible-layers img CLIP-TO-IMAGE) ) )
            (gimp-layer-flatten upperTexture)
            (gimp-layer-add-alpha upperTexture)
            ; Base tarrain ready
   
            (plug-in-map-object 1 img upperTexture 1
               0.5 0.5 2 ;viewpoint
               0.5 0.5 0 ;position
               1 0 0 ;1st axis
               0 1 0 ;2nd axis
               0 0 0 ;rotate angle
               2 ;lighttype (2=none)
               '(0 0 0) ;lightcolor
               0 0 0 ;lightposition
               0 0 0 ;lightdirection
               0 0 0 0 0 ;material
               TRUE FALSE FALSE TRUE 0.25
               0.5 0.5 0.5 ;scale
               0.8 -1 -1 -1 -1 -1 -1 -1 -1 ;cyl-and-box params
            )
         )
         (begin
            (gimp-image-add-layer img upperTexture 0)
            (warstone-surface-texture img upperTexture (= inTexture 1) FALSE)
            (gimp-layer-flatten upperTexture)
            (gimp-layer-add-alpha upperTexture)
            (plug-in-applylens 1 img upperTexture 2 FALSE FALSE TRUE)
            (set! upperTexture (car (gimp-drawable-transform-scale-default upperTexture (/ (car (gimp-drawable-width upperTexture) ) 4) (/ (car (gimp-drawable-height upperTexture) ) 4) (* (/ (car (gimp-drawable-width upperTexture) ) 4) 3) (* (/ (car (gimp-drawable-height upperTexture) ) 4) 3) TRUE TRANSFORM-RESIZE-ADJUST ) ) )
            (gimp-layer-resize-to-image-size upperTexture)
            
         )
      )
      (gimp-levels-stretch upperTexture)
      (set! lowerTexture (car (gimp-layer-copy upperTexture TRUE) ) )
      (gimp-image-add-layer img lowerTexture 1)
;      (set! maskTexture (car (gimp-layer-copy lowerTexture TRUE) ) )
      (warstone-util-sphere-emboss img upperTexture)
      (gimp-context-set-gradient surfGradient)
      (plug-in-gradmap 1 img lowerTexture)
      (gimp-layer-set-mode upperTexture SOFTLIGHT-MODE)
      (set! upperTexture (car (gimp-image-merge-visible-layers img CLIP-TO-IMAGE) ) )
;      (gimp-image-add-layer img maskTexture 1)

      (if (= inGradientRandom 1) (gimp-gradient-delete surfGradient))

      (gimp-image-resize img endSize endSize deltaSize deltaSize)
      (gimp-layer-resize-to-image-size upperTexture)

      (gimp-context-pop)
      (gimp-display-new img)
      (gimp-displays-flush)
   )
)

(script-fu-register "warstone-surface-texture"
   "Planet texture"
   "Generate planet surface texture"
   "Warstone"
   "Copyright Warstone"
   "Jul 2011"
   "RGB* GRAY* INDEXED*"
   SF-IMAGE   "Image" 0
   SF-DRAWABLE   "Drawable" 0
   SF-TOGGLE   "Simple" TRUE
   SF-TOGGLE   "Normalize" TRUE
)

(script-fu-register "warstone-clouds"
   "Clouds texture"
   "Generate clouds texture"
   "Warstone"
   "Copyright Warstone"
   "Jul 2011"
   "RGB* GRAY* INDEXED*"
   SF-IMAGE   "Image" 0
   SF-DRAWABLE   "Drawable" 0
)

(script-fu-register "warstone-planet"
   "Planet"
   "Create planet"
   "Warstone"
   "Copyright Warstone"
   "Jul 2011"
   ""
   SF-VALUE   "Planet size"   "128"
   SF-OPTION   "Texture generation method" '("Bitexturial" "Bitexturial-fast" "Semitexturial (NOT IMPLEMENTED)")
   SF-OPTION   "'Planetize' method" '("Projection" "Linse")
   SF-GRADIENT   "Surface gradient"   "Caribbean Blues"
   SF-TOGGLE   "Generate gradient"   TRUE
)

(script-fu-menu-register "warstone-planet" "<Image>/File/Create/Warstone")
(script-fu-menu-register "warstone-surface-texture" "<Image>/Filters/Warstone")
(script-fu-menu-register "warstone-clouds" "<Image>/Filters/Warstone")
 256X256 v1.03   (кликните здесь для просмотра)
 1024X1024 v1.03   (кликните здесь для просмотра)

Дальнейшие планы:
- Переделать градиент на четкую плавную линию берега
- Сделать затенение от солнца (расположение солнца должно настраиваться)
- Сделать возможность генерации "огоньков" от поселений.
_________________
WARNING: By reading this post you accept that this post is genius.

Последний раз редактировалось: Варсик (13:05 29-07-2011), всего редактировалось 6 раз(а)
    Добавлено: 16:39 25-07-2011   
Канал творчества: «GIMP В процессе осваивания»
На страницу: Пред.  1, 2, 3 | Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: Вчера в беспроигрышной лотерее выиграл телепузика. Опять. Это не к добру. (насторожился Scanka)

  » GIMP В процессе осваивания | страница 3
Каналы: Новости | Elite | Elite: Dangerous | Freelancer | Star Citizen | X-Tension/X-BTF | X2: The Threat | X3: Reunion | X3: Terran Conflict | X Rebirth | X4: Foundations | EVE Online | Orbiter | Kerbal Space Program | Evochron | VoidExpanse | Космические Миры | Онлайновые игры | Другие игры | Цифровая дистрибуция | play.elite-games.ru | ЗВ 2: Гражданская война | Творчество | Железо | Игра Мечты | Сайт
   Дизайн Elite Games V5 beta.18