Вы не авторизованы.

Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
Fragmenarium. Обсуждение, решение проблем.

ТЕМА: Скрипт вращения

Скрипт вращения 5 года 10 мес. назад #286

  • SCORPION
  • SCORPION аватар
  • Вне сайта
  • Модератор я...
  • Всё получилось, а никто не заметил...(
  • Сообщений: 530
  • Сказали Отлично!: 464
  • Репутация: 38
В общем, обозвал его так, ничего лучшего не придумал.
Довольно простой скрипт, легко встраивается во все пресеты, но позволяет получать очень интересные фракталы.
Пример использования скрипта:

BulbSwirl.jpg


Swirl.jpg


Вот скрипт нижнего изображения, это 4D Quaternion Julia из штатного пресета с добавлением скрипта вращения:
#include "DE-Raytracer.frag"
#include "MathUtils.frag"

#group Rotation
uniform vec3 RotationCenter; slider[(-1,-1,-1),(0,0,0),(1,1,1)]
uniform float RotationRadius;  slider[0.01,1,2]
 
 
#group 4D Quaternion Julia

// Number of fractal iterations.
uniform int IterationsQ;  slider[0,16,100]
// Breakout distance
uniform float Threshold; slider[0,10,100]
// Quaterion Constant
uniform vec4 C; slider[(-1,-1,-1,-1),(0.18,0.88,0.24,0.16),(1,1,1,1)]
 
 
float DEQ(vec3 pos) {
	vec4 p = vec4(pos, 0.0);
	vec4 dp = vec4(1.0, 0.0,0.0,0.0);
	for (int i = 0; i < IterationsQ; i++) {
		dp = 2.0* vec4(p.x*dp.x-dot(p.yzw, dp.yzw), p.x*dp.yzw+dp.x*p.yzw+cross(p.yzw, dp.yzw));
		p = vec4(p.x*p.x-dot(p.yzw, p.yzw), vec3(2.0*p.x*p.yzw)) + C;
		float p2 = dot(p,p);
		orbitTrap = min(orbitTrap, abs(vec4(p.xyz,p2)));
		if (p2 > Threshold) break;
	}
	float r = length(p);
	return  0.5 * r * log(r) / length(dp);
}
 
float DE(vec3 p) {
		p=p-RotationCenter;
		float r=length(p);
		float r2=r*r;
		p=(RotationRadius/r2)*p+RotationCenter;
		float de=DEQ(p);
		de=r2*de/(RotationRadius+r*de);	
return de;
	}
 
#preset default
FOV = 0.62536
Eye = 6.3825,3.19966,0.289313
Target = -1.71802,-0.348038,-0.279469
EquiRectangular = false
FocalPlane = 6.1538
Aperture = 0.2
Gamma = 1
ToneMapping = 3
Exposure = 1
Brightness = 1.7857
Contrast = 0.9901
Saturation = 1
GaussianWeight = 1
AntiAliasScale = 1
Detail = -3.5
DetailAO = -1.45124
FudgeFactor = 1
MaxRaySteps = 256
Dither = 0.5
NormalBackStep = 1
AO = 0,0,0,1
Specular = 0.0101
SpecularExp = 44.643
SpecularMax = 14.925
SpotLight = 1,1,1,0.92308
SpotLightDir = 0.68116,0.15942
CamLight = 1,1,1,0.21212
CamLightMin = 0
Glow = 1,1,1,0.07692
GlowMax = 69
Fog = 0.1593
HardShadow = 0.35714 NotLocked
ShadowSoft = 20
Reflection = 0.0241 NotLocked
DebugSun = false NotLocked
SunColor = 0.03409,1,1
BaseColor = 1,1,1
OrbitStrength = 0.91463
X = 1,1,1,1
Y = 0.345098,0.666667,0,0.87038
Z = 1,0.372549,0.0117647,1
R = 0.0901961,0.65098,1,0.43926
BackgroundColor = 1,1,1
GradientBackground = 0.58825
CycleColors = true
Cycles = 29.9793
EnableFloor = true NotLocked
FloorNormal = 0.02084,-0.20834,-0.70834
FloorHeight = -3.3146
FloorColor = 0.54902,0.54902,0.54902
SR = 6.3043,5.7971,0
RotationCenter = 0.1579,1,-0.11578
RotationRadius = 0.9453
IterationsQ = 63
Threshold = 12.36
C = 0.40458,0.48092,0.1145,0.43512
Up = -0.790713,-0.451457,-0.456912
#endpreset

Всё элементарно просто - вверху мы видим ползунки для вращения, ниже ползунки и функция фрактала, ниже которого функция вращения.

Q3.jpg


Вот и всё, пробуйте добавлять скрипт к другим фракталам!
Кому это надо?
- Никому не надо...
Кому это нужно?
- Никому не нужно...
Последнее редактирование: 5 года 10 мес. назад от SCORPION.
Администратор запретил публиковать записи гостям.
Отлично! сказали: androceus, l.k.-meliss@

Скрипт вращения 5 года 10 мес. назад #287

  • androceus
  • androceus аватар
  • Вне сайта
  • Администратор
  • Пришелец
  • Сообщений: 862
  • Сказали Отлично!: 771
  • Репутация: 21
Клёво.
Интернет полезности - мой канал на YouTube. Криптовалютные проекты + полезные советы. Перейти и ознакомится: goo.gl/JgDUJo
Администратор запретил публиковать записи гостям.

Скрипт вращения 5 года 10 мес. назад #288

  • Crist
  • Crist аватар
  • Вне сайта
  • Фракталы?... Да слышал.
  • Сообщений: 66
  • Сказали Отлично!: 157
  • Репутация: 12
Круто! Спасибо!
Администратор запретил публиковать записи гостям.

Скрипт вращения 5 года 2 мес. назад #2674

  • adminus
  • adminus аватар
  • Вне сайта
  • Администратор
  • consequat quis extralabile
  • Сообщений: 748
  • Сказали Отлично!: 544
  • Репутация: 17
Владимир, а как вставить скрипт в данный набор?
#info Theli-at's Pseudo Kleinian (Scale 1 JuliaBox + Something
#include "DE-RaytracerK.frag"
#include "MathUtils.frag"
#group PseudoKleinian

#define USE_INF_NORM


// Maximum iterations
uniform int MI; slider[0,5,20]
uniform int ColorIterations; slider[0,9,100]
// Bailout
//uniform float Bailout; slider[0,20,1000]

// Size
uniform float Size; slider[0,1,2]

// Cubic fold Size
uniform vec3 CSize; slider[(0,0,0),(1,1,1),(2,2,2)]

// Julia constant
uniform vec3 C; slider[(-2,-2,-2),(0,0,0),(2,2,2)]

// Thingy thickness
uniform float TThickness; slider[0,0.01,2]

// Thingy DE Offset
uniform float DEoffset; slider[0,0,0.01]

// Thingy Translation
uniform vec3 Offset; slider[(-1,-1,-1),(0,0,0),(1,1,1)]

float RoundBox(vec3 p, vec3 csize, float offset)
{
vec3 di = abs(p) - csize;
float k=max(di.x,max(di.y,di.z));
return abs(k*float(k<0.)+ length(max(di,0.0))-offset);
}

float Thingy(vec3 p, float e){
p-=Offset;
return (abs(length(p.xy)*p.z)-e) / sqrt(dot(p,p)+abs(e));
}

float Thing2(vec3 p){
//Just scale=1 Julia box
float DEfactor=1.;
vec3 ap=p+1.;
for(int i=0;i<MI && ap!=p;i++){
ap=p;
p=2.*clamp(p, -CSize, CSize)-p;

float r2=dot(p,p);
orbitTrap = min(orbitTrap, abs(vec4(p,r2)));
float k=max(Size/r2,1.);

p*=k;DEfactor*=k;

p+=C;
if (i<ColorIterations) orbitTrap = min(orbitTrap, abs(vec4(p,dot(p,p))));
}
//Call basic shape and scale its DE
return abs(0.5*Thingy(p,TThickness)/DEfactor-DEoffset);

//Alternative shape
//return abs(0.5*RoundBox(p, vec3(1.,1.,1.), 1.0)/DEfactor-DEoffset);
//Just a plane
//return abs(0.5*abs(p.z-Offset.z)/DEfactor-DEoffset);
}

float DE(vec3 p){
return Thing2(p);//RoundBox(p, CSize, Offset);
}
consequat quis extralabile
Последнее редактирование: 5 года 2 мес. назад от adminus.
Администратор запретил публиковать записи гостям.

Скрипт вращения 5 года 2 мес. назад #2676

  • SCORPION
  • SCORPION аватар
  • Вне сайта
  • Модератор я...
  • Всё получилось, а никто не заметил...(
  • Сообщений: 530
  • Сказали Отлично!: 464
  • Репутация: 38
Дмитрий, так же, как я и объяснял...

ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]
Кому это надо?
- Никому не надо...
Кому это нужно?
- Никому не нужно...
Администратор запретил публиковать записи гостям.

Скрипт вращения 5 года 2 мес. назад #2677

  • adminus
  • adminus аватар
  • Вне сайта
  • Администратор
  • consequat quis extralabile
  • Сообщений: 748
  • Сказали Отлично!: 544
  • Репутация: 17
Ага, спасибо Владимир! Результаты фантастические!
consequat quis extralabile
Администратор запретил публиковать записи гостям.

Скрипт вращения 5 года 2 мес. назад #2680

  • SCORPION
  • SCORPION аватар
  • Вне сайта
  • Модератор я...
  • Всё получилось, а никто не заметил...(
  • Сообщений: 530
  • Сказали Отлично!: 464
  • Репутация: 38
Чем могу.... Только не стесняйтесь спрашивать, а то я совсем погряз в ультра фрактале и скоро фраг совсем забуду... :dntknw:
Кому это надо?
- Никому не надо...
Кому это нужно?
- Никому не нужно...
Администратор запретил публиковать записи гостям.

Скрипт вращения 5 года 2 мес. назад #2686

  • adminus
  • adminus аватар
  • Вне сайта
  • Администратор
  • consequat quis extralabile
  • Сообщений: 748
  • Сказали Отлично!: 544
  • Репутация: 17
А есть еще скрипты?
Если есть - то отдельная тема не помешает. Кроме того, если есть, для удобства их можно впихнуть в сборку.
В частности, интересует скрипт со сферами, чтобы впихнуть во фрактал сферу, причем итерируемую, с множителем. Или это уже гибрид?
consequat quis extralabile
Администратор запретил публиковать записи гостям.
Модераторы: SCORPION
Время создания страницы: 0.255 секунд
1. Erik_Wollo-Blue_Radiance Play
2. Astropilot_Solar Walk IV Play
3. GERMIND _ Cosmicleaf Records Series Vol.14 Play
4. Kyoto_-_Bodhisattva_(Original_Mix) Play
5. Play