3DCoatScripting  4.8.31Ξ²
Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ скриптинга ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ возмоТностями ΠšΠΎΡƒΡ‚Π° ΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π».
πŸŒ€ Π‘ΡƒΠ»Π΅Π²Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ мСшами

3DCoat способСн ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ мСши, создавая модСль, которая Π½ΡƒΠΆΠ½Π° Ρ‚Π΅Π±Π΅. Он ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚Ρ€ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ:

  1. ОбъСдинСниС
  2. Π’Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅
  3. ΠŸΠ΅Ρ€Π΅ΡΠ΅Ρ‡Π΅Π½ΠΈΠ΅

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ, ΠΊΠ°ΠΊ это ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ скриптами.

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π΄Π²Π΅ сфСры ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ 3DCoat. Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ сСкции Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚Ρ‹ ΠΌΠΎΠ³ просто ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ.

ΠžΠ±Ρ€Π°Ρ‚ΠΈ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ‚Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΡˆΡŒ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Ρ‹ΠΉ мСш с Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½ΠΎΠΉ сСткой. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ это, ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡŒΡ Π² ΡΠΊΡƒΠ»ΡŒΠΏΡ‚-ΠΊΠΎΠΌΠ½Π°Ρ‚Π΅ 3DCoat Π² Ρ€Π΅ΠΆΠΈΠΌ, Π³Π΄Π΅ ΠΎΠ½Π° Π²ΠΈΠ΄Π½Π° (клавиша W Π½Π° ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π΅ ΠΈΠ»ΠΈ мСню "ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ / ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ сСтку").

ОбъСдинСниС (Add)

void main() {
// ΠΏΠΎΠ΄Π³ΠΎΡ‚Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ сцСну
SculptRoom room;
room.clear().toSurface();
// создаём Π΄Π²Π΅ сфСры рядом Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹
// ΠΎΠ½ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Π²Π°Π»ΠΈ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π°
Builder builder;
Mesh a = builder.sphere()
.radius( 70 )
.details( 0.1 )
.build();
Mesh b = builder.sphere()
.radius( 40 )
.position( Vec3( 30, 40, 50 ) )
.details( 0.5 )
.build();
// объСдиняСм мСши
Mesh result = a | b;
// Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Π΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ мСш Π½Π° сцСнС
room += result;
}

Π’Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅ (Subtract)

void main() {
// ΠΏΠΎΠ΄Π³ΠΎΡ‚Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ сцСну
SculptRoom room;
room.clear().toSurface();
// создаём Π΄Π²Π΅ сфСры Ρ€Π°Π·Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° рядом Ρ‚Π°ΠΊ,
// Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Π²Π°Π»ΠΈ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π°
Builder builder;
Mesh a = builder.sphere()
.radius( 70 )
.details( 0.1 )
.build();
Mesh b = builder.sphere()
.radius( 40 )
.position( Vec3( 30, 40, 50 ) )
.details( 0.5 )
.build();
// Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π΅ΠΌ мСши
Mesh result = a - b;
// Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Π΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ мСш Π½Π° сцСнС
room += result;
}

ΠŸΠ΅Ρ€Π΅ΡΠ΅Ρ‡Π΅Π½ΠΈΠ΅ (Intersect)

void main() {
// ΠΏΠΎΠ΄Π³ΠΎΡ‚Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ сцСну
SculptRoom room;
room.clear().toSurface();
// создаём Π΄Π²Π΅ сфСры Ρ€Π°Π·Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° рядом Ρ‚Π°ΠΊ,
// Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Π²Π°Π»ΠΈ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π°
Builder builder;
Mesh a = builder.sphere()
.radius( 70 )
.details( 0.1 )
.build();
Mesh b = builder.sphere()
.radius( 40 )
.position( Vec3( 30, 40, 50 ) )
.details( 0.5 )
.build();
// пСрСсСкаСм мСши
Mesh result = a & b;
// Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Π΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ мСш Π½Π° сцСнС
room += result;
}

ВмСстС

Π’. ΠΊ. Ρ‚Ρ‹, навСрняка, Π·Π°Ρ…ΠΎΡ‡Π΅ΡˆΡŒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ послоТнСС, Ρ‡Π΅ΠΌ ΠΎΠ΄ΠΈΠ½ΠΎΠΊΠΈΠΉ мСш Π½Π° сцСнС, объСдиним всС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π±ΡƒΠ»Π΅Π²Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π°Π΄ мСшами Π²Ρ‹ΡˆΠ΅ ΠΈ размСстим **всС** ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π½Π° сцСнС.

Для этого понадобится Π·Π½Π°Π½ΠΈΠ΅ ΠΎ доступных Π² 3DCoat ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… трансформации.

void main() {
// ΠΏΠΎΠ΄Π³ΠΎΡ‚Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ сцСну
SculptRoom room;
room.clear().toSurface();
// создаём Π΄Π²Π΅ сфСры Ρ€Π°Π·Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° рядом Ρ‚Π°ΠΊ,
// Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Π²Π°Π»ΠΈ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π°
Builder builder;
Mesh a = builder.sphere()
.radius( 70 )
.details( 0.1 )
.build();
Mesh b = builder.sphere()
.radius( 40 )
.position( Vec3( 30, 40, 50 ) )
.details( 0.5 )
.build();
// выполняСм Π±ΡƒΠ»Π΅Π²Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ мСшами
// ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π° сцСну
const Vec3 floorShift( 0, 200, 0 );
Mesh add = a | b;
Vec3 floor = Vec3( 0 );
add.tools().transform().position( floor ).run();
room += add;
Mesh subtract = a - b;
floor += floorShift;
subtract.tools().transform().position( floor ).run();
room += subtract;
Mesh intersect = a & b;
floor += floorShift;
intersect.tools().transform().position( floor ).run();
room += intersect;
}

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρƒ тСбя Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ "ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄ΠΊΠ°" ΠΈΠ· сфСр... Π’ΠΎΡ‡Π½Π΅Π΅, ΠΈΠ· Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ с Π½ΠΈΠΌΠΈ стало послС объСдинСния, вычитания ΠΈ пСрСсСчСния.

Π‘ΠΎΠ»Π΅Π΅ слоТный ΠΊΠΎΠ΄ ΡƒΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ. Π’ скриптингС 3DCoat ΠΎΠ½Π° Ρ‚ΠΎΠΆΠ΅ Π΅ΡΡ‚ΡŒ.

Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅
πŸŒ€ Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ свой скрипт
πŸŒ€ Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ мСшСй ΠΈΠ· ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ²
πŸŒ€ ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ мСшСй
πŸŒ€ ΠžΡ‚Π»Π°Π΄ΠΊΠ° скриптов