Render Referansı - Işınlar

Render Kütüphanesi Referansları

Bu sayfa, Render Kütüphanesini belgelemeye adanmış bir dizi sayfa olan Render Referansının bir parçasıdır.

Diğer Render Referansları sayfaları şunları içerir:

Işınlar (Beams) Nedir?

Işın fonksiyonları, birden çok bağlı Işın Parçasından (Beam Segments) 3D uzayda sürekli çizgiler çizmeyi kolaylaştırır.
Işın Parçaları, düzlüklerini gizlemek için her zaman kameraya bakmaya çalışan (Billboards) dokulu dörtgenlerden (quads) çizilir. İticilerdeki alev, halatlar, şimşek efektleri ve daha fazlası gibi şeyler için kullanılırlar.

Işınları çizmek için iki yaklaşım vardır:

Örnekler

Örnek: Çok Parçalı (Multi-Segment)

Birden çok Işın Parçasından oluşan sürekli bir Işın kullanarak bir yıldız çizimi.

Bu örneği kendiniz çalıştırmak isterseniz, garrysmod/addons içinde "RenderBeamExample" adında yeni bir klasör oluşturun ve aşağıdaki örnek kodu garrysmod/addons/RenderBeamExample/lua/autorun/client/ içindeki bir .lua dosyasına yerleştirin.

Beklenmedik davranışları önlemek için diğer tüm örnek kodların kaldırıldığından veya değiştirildiğinden emin olun!

-- Yapılandırma değişkenleri local beamWidth = 10 local starRadius = 100 local starCenter = Vector( 0, 0, 0 ) -- Yıldızın noktalarını hesapla -- Bu açılar, iyi görünene kadar tahmin edilip kontrol edilerek belirlendi local starTopLeft = starCenter + Vector( 0, math.sin( math.rad( -60 ) ), math.cos( math.rad( -60 ) ) ) * starRadius local starTopRight = starCenter + Vector( 0, math.sin( math.rad( 60 ) ), math.cos( math.rad( 60 ) ) ) * starRadius local starTopCenter = starCenter + Vector( 0, math.sin( math.rad( 0 ) ), math.cos( math.rad( 0 ) ) ) * starRadius local starBottomLeft = starCenter + Vector( 0, math.sin( math.rad( 180 + 35 ) ), math.cos( math.rad( 180 + 35 ) ) ) * starRadius local starBottomRight = starCenter + Vector( 0, math.sin( math.rad( 180 - 35 ) ), math.cos( math.rad( 180 - 35 ) ) ) * starRadius hook.Add( "PostDrawOpaqueRenderables", "RenderBeamMultiSegmentExample", function() -- Işının rengine tepki veren bir materyal kullan render.SetColorMaterial() -- Işın Parçalarının tel kafes görünümünü görmek için aşağıdaki satırın yorumunu kaldırın -- render.SetMaterial( Material( "models/wireframe" ) ) -- Her render.AddBeam() çağrısı, Işının yolu boyunca başka bir "durak" ekler. -- Aralarında bir Işın Parçası çizilebilmesi için en az iki "durak" olmalıdır. render.StartBeam( 6 ) render.AddBeam( starBottomLeft, beamWidth, 0, Color( 162, 224, 46 ) ) render.AddBeam( starTopCenter, beamWidth, 0, Color( 27, 189, 189 ) ) render.AddBeam( starBottomRight, beamWidth, 0, Color( 190, 38, 165 ) ) render.AddBeam( starTopLeft, beamWidth, 0, Color( 224, 132, 46 ) ) render.AddBeam( starTopRight, beamWidth, 0, Color( 207, 30, 30 ) ) render.AddBeam( starBottomLeft, beamWidth, 0, Color( 162, 224, 46 ) ) render.EndBeam() end )

render.AddBeam çağrılarında belirtilen genişlikte olan Işının başladığı ve bittiği yere (yıldızın sol alt köşesi) dikkat edin. Yıldızın diğer köşelerinde, Işının ucu bir sonraki Işın Parçasının yönünü karşılamak için döndürüldüğünden Işın daha ince görünür. Bu, aşağıdaki ikinci ekran görüntüsünde görülen tel kafes görünümünde daha kolay fark edilir.

MultiSegmentBeamStarColor.png
MultiSegmentBeamStarWireframe.png

Örnek: Tek Parçalı (Single-Segment)

Tek Işın Parçalarından oluşan birkaç Işın kullanarak bir yıldız çizimi.

Bu örneği kendiniz çalıştırmak isterseniz, garrysmod/addons içinde "RenderBeamExample" adında yeni bir klasör oluşturun ve aşağıdaki örnek kodu garrysmod/addons/RenderBeamExample/lua/autorun/client/ içindeki bir .lua dosyasına yerleştirin.

Beklenmedik davranışları önlemek için diğer tüm örnek kodların kaldırıldığından veya değiştirildiğinden emin olun!

-- Yapılandırma değişkenleri local beamWidth = 10 local starRadius = 100 local starCenter = Vector( 0, 0, 0 ) -- Yıldızın noktalarını hesapla -- Bu açılar, iyi görünene kadar tahmin edilip kontrol edilerek belirlendi local starTopLeft = starCenter + Vector( 0, math.sin( math.rad( -60 ) ), math.cos( math.rad( -60 ) ) ) * starRadius local starTopRight = starCenter + Vector( 0, math.sin( math.rad( 60 ) ), math.cos( math.rad( 60 ) ) ) * starRadius local starTopCenter = starCenter + Vector( 0, math.sin( math.rad( 0 ) ), math.cos( math.rad( 0 ) ) ) * starRadius local starBottomLeft = starCenter + Vector( 0, math.sin( math.rad( 180 + 35 ) ), math.cos( math.rad( 180 + 35 ) ) ) * starRadius local starBottomRight = starCenter + Vector( 0, math.sin( math.rad( 180 - 35 ) ), math.cos( math.rad( 180 - 35 ) ) ) * starRadius hook.Add( "PostDrawOpaqueRenderables", "RenderBeamSingleSegmentExample", function() -- Işının rengine tepki veren bir materyal kullan render.SetColorMaterial() -- Işınların tel kafes görünümünü görmek için bu satırın yorumunu kaldırın -- render.SetMaterial( Material( "models/wireframe" ) ) -- Hesaplanan noktalar arasına yıldızın çizgilerini çiz render.DrawBeam( starBottomLeft, starTopCenter, beamWidth, 0, 1, Color( 162, 224, 46 ) ) render.DrawBeam( starTopCenter, starBottomRight, beamWidth, 0, 1, Color( 27, 189, 189 ) ) render.DrawBeam( starBottomRight, starTopLeft, beamWidth, 0, 1, Color( 190, 38, 165 ) ) render.DrawBeam( starTopLeft, starTopRight, beamWidth, 0, 1, Color( 224, 132, 46 ) ) render.DrawBeam( starTopRight, starBottomLeft, beamWidth, 0, 1, Color( 207, 30, 30 ) ) end )
SingleSegmentBeamStarColor.png
SingleSegmentBeamStarWireframe.png

Tüm sunucular · GmodTR Launcher · Rehber · GMod Wiki · GmodTR nedir? · Sunucu ekle · Discord