forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Blitz3D и CellShader (http://forum.boolean.name/showthread.php?t=17243)

CorvusiiCorax 28.08.2012 16:02

Blitz3D и CellShader
 
Всем привет. Можно ли в blitz3d сделать эффект цел-шейдинга (CellShader) ???

Такой пример графики встречается в игре Bordelands !!!

Nerd 28.08.2012 16:15

Ответ: Blitz3D и CellShader
 
Для создания контура можно склонировать объект, сдвинуть вертексы в сторону нормали, а потом FlipMesh.
Эффект постеризации только силами библиотеки FastExt.

Wegox 28.08.2012 18:23

Ответ: Blitz3D и CellShader
 
Вложений: 2
Тут наверное лучше использовать сразу два метода Dot3 там левой кнопкой покликай, пока чел из Doom3 не появиться и второй это оконтовка Bordering the object

Nex 28.08.2012 18:24

Ответ: Blitz3D и CellShader
 
Для примитивов сойдет.
Код:

Global tex,cam,planet,glow

Graphics3D 1024,768,32,2

        camera=CreateCamera()
                CameraZoom camera,1.5
               
        cube = CreateCube ()
                Cel_Shade (cube,0.05,255)
        sphere = CreateSphere (6)
                Cel_Shade (sphere,0.05,255)
                PositionEntity sphere,-5,0,0
        light=CreateLight(2)
                MoveEntity light,1000,1000,-1000
                MoveEntity camera,0,0,-10


While Not KeyHit(1)
        TurnEntity cube,0.4,0.2,0.2
        TurnEntity sphere,0.4,0.3,0.2

        RenderWorld ()
        Flip
Wend
End


Function Cel_Shade (Shaded_Entity, OutlineScale#=0.025, r#=0, g#=0, b#=0)
    Local Outline_Entity = CopyMesh(Shaded_Entity)       
    UpdateNormals (Outline_Entity) 
    EntityFX (Outline_Entity, 1+8)
   
   
    Local i
    For i = 1 To CountSurfaces(Outline_Entity)
       
        Local surf = GetSurface(Outline_Entity, i)
        Local j
       
        For j = 0 To CountVertices(surf) - 1
            Local Vx#  = VertexX#(surf, j)
            Local Vy#  = VertexY#(surf, j)
            Local Vz#  = VertexZ#(surf, j)
            Local VNx# = VertexNX#(surf, j)
            Local VNy# = VertexNY#(surf, j)
            Local VNz# = VertexNZ#(surf, j)
            VertexCoords (surf, j, Vx#+(VNx#*OutlineScale#), Vy#+(VNy#*OutlineScale#), Vz#+(VNz#*OutlineScale#))
        Next
       
    Next
   
    FlipMesh Outline_Entity
    EntityColor Outline_Entity, r, g, b
        RotateEntity Outline_Entity,EntityPitch (Shaded_Entity, True),EntityYaw (Shaded_Entity, True),EntityRoll (Shaded_Entity, True)
    PositionEntity Outline_Entity, EntityX#(Shaded_Entity, True), EntityY#(Shaded_Entity, True), EntityZ#(Shaded_Entity, True)
    EntityParent Outline_Entity, Shaded_Entity
End Function


Кирпи4 06.09.2012 19:27

Ответ: Blitz3D и CellShader
 
Вот у Нэкса отличный код, у меня используется точь-в-точь такой же алгоритм (единственное - обрисовка всегда чёрная), плюс юзаю текстуру-сфермап с блендом 2. Скрин и сама сфермапа ниже.




Сфермапа:



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

moka 06.09.2012 19:58

Ответ: Blitz3D и CellShader
 
клёвый аватар

Кирпи4 06.09.2012 19:58

Ответ: Blitz3D и CellShader
 
Ах да, там ещё используется функция разворота костей у обводки в такие же углы как и у оригинала

Цитата:

Сообщение от MoKa (Сообщение 237980)
клёвый аватар

Всмысле аватар? Кирпичи? Или перс?

CorvusiiCorax 18.09.2012 18:01

Ответ: Blitz3D и CellShader
 
Всем спасибо !!!


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

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