金曜日, 8月 08, 2025
木曜日, 8月 07, 2025
modoローポリモデリング 59
四角形ポリゴンを三角形ポリゴンに変換手順
私は今のところ実験用にしか使わないのですが、ソフトによっては三角形ポリゴンの方が都合が良いモノもあるらしい?ので、変換方法を整理してみました。
処理したいデータを選択し、以下の1〜5の手順を踏みます。
1.[メッシュオペレーション]
2.[オペレータ追加]>[プロシージャルモデリング]>[編集]>[Mesh Operations]
3.[[オペレータ追加]>[プロシージャルモデリング]>[メッシュオペレーション]>[編集]>[Merge Meshes]
4.[オペレータ追加]>[プロシージャルモデリング]>[編集]>[Freeze]
5.[オペレータ追加]>[プロシージャルモデリング]>[ポリゴン]>[Triangulate]
これで四角形ポリゴンは、三角形ポリゴンに切り替わります。後は書き出しするだけですが、そのままOBJ形式で書き出して再読み込みすると、なぜか?三角を維持しません。そこで・・・

書き出したOBJ形式をmodoに読み込むときに[スタティックメッシュとして読み込み]にチェックを入れれば三角形ポリゴンを確認できます。ただし、他の3Dソフトで読み込むと三角形ポリゴンではなく四角形ポリゴンで読み込まれてしまいます。
ラベル:
3D,
modo,
modo_Low_Polygon
水曜日, 8月 06, 2025
Let's start JavaScript 79
HTMLでアラビア数字を漢数字に変換
たま〜に必要なので、ダラダラ作っていました。
HTMLでアラビア数字を漢数字に変換します。
変換する漢数字は上の右端を基準としました。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>漢数字変換</title>
<style>
body {
margin: 0;
padding: 0;
height: 100%;
font-family: serif;
background-color: black;
color: white;
}
.container {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
height: 50vh;
text-align: center;
}
input {
padding: 5px;
font-size: 18px;
margin: 5px;
}
button {
padding: 0px;
font-size: 16px;
margin: 5px;
width: 60px;
height: 30px;
}
#result {
margin-top: 20px;
font-size: 32px;
font-weight: bold;
color: white;
}
</style>
</head>
<body>
<div class="container">
<h3>アラビア数字を漢数字に変換<br>
Convert Arabic Numerals to Kanji Numerals</h3>
<input type="number" id="inputNumber"
placeholder="数値を入力">
<button onclick="convertToKanji()">変換</button>
<div id="result"></div>
</div>
<script>
function convertToKanji() {
const num =
parseInt(document.getElementById('inputNumber').value, 10);
const resultDiv = document.getElementById('result');
if (isNaN(num)) {
resultDiv.textContent = '数値を入力してください。';
return;
}
resultDiv.textContent = numberToKanji(num);
}
function numberToKanji(num) {
const kanjiDigits = ['零', '壱', '弐', '参', '肆', '伍', '陸', '漆', '捌', '玖'];
const kanjiUnits = ['', '拾', '佰', '阡'];
const kanjiBigUnits = ['', '萬', '億', '兆'];
if (num === 0) return kanjiDigits[0];
let result = '';
const numStr = num.toString();
const chunks = [];
// 4桁ごとに右から区切る
let temp = numStr;
while (temp.length > 0) {
const chunk = temp.slice(-4);
chunks.unshift(chunk.padStart(4, '0'));
temp = temp.slice(0, -4);
}
chunks.forEach((chunk, i) => {
let part = '';
for (let j = 0; j < 4; j++) {
const digit = parseInt(chunk[j]);
if (digit !== 0) {
if (!(digit === 1 && j ===
0 && chunk.length === 4 && i === 0 && j !== 3)) {
part += kanjiDigits[digit];
}
part += kanjiUnits[3 - j];
}
}
if (part !== '') {
result += part + kanjiBigUnits[chunks.length - 1 - i];
}
});
return result;
}
</script>
</body>
</html>

漢数字を表示します。
アラビア数字を漢数字に変換は、説明しないとワカランチンですね(^o^)汗12345647890
▼
12億3456万7890
▼
十2億3千4百5十6万7千8百9十
▼
一十二億三千四百五十六万七千八百九十
▼
壱拾弐億参阡肆佰伍拾陸萬漆阡捌佰玖拾
ラベル:
HTML,
JavaScript
火曜日, 8月 05, 2025
JavaScriptでAI遊び 58
Illustratorで最小多角形の直径間隔で蛇の目風を作る
Illustratorで最小多角形の直径の間隔で蛇の目風を作る。多角形対応版。
数を指定しても煩雑になるので、ここでは元の多角形を含めて4つの多角形で作成する蛇の目風マークを任意の多角形を選択して自動生成します。その際、最小多角形がそれぞれの多角形の垂直方向の間隔を同じとします。
結果、選択した多角形の垂直方向の直径Aに対して
2つ目の多角形の直径は(A÷7×5)、
3つ目の多角形の直径は(A÷7×3)、
一番小さい多角形の直径は(A÷7×1)
となります。
奇数角形の場合。中心点の関係で見た目はチョット変ですが、間違っていません。
(function () {
var doc = app.activeDocument;
var sel = doc.selection;
if (sel.length !== 1 || sel[0].typename !==
"PathItem" || !sel[0].closed) {
alert("1つの多角形を選択してください。");
return;
}
var basePolygon = sel[0];
var baseBounds = basePolygon.geometricBounds;
var centerX = (baseBounds[0] + baseBounds[2]) / 2;
var centerY = (baseBounds[1] + baseBounds[3]) / 2;
var baseWidth = baseBounds[2] - baseBounds[0];
var baseHeight = baseBounds[1] - baseBounds[3];
var sizes = [5/7, 3/7, 1/7];
for (var i = 0; i < sizes.length; i++) {
var newWidth = baseWidth * sizes[i];
var newHeight = baseHeight * sizes[i];
var newPolygon = basePolygon.duplicate();
newPolygon.resize(sizes[i] * 100, sizes[i] * 100);
newPolygon.position =
[centerX - newWidth / 2, centerY + newHeight / 2];
newPolygon.stroked = true;
newPolygon.filled = false;
}
})();
偶数角形の処理結果。
奇数角形の処理結果。
ラベル:
Illustrator,
JavaScript
TCDW8484
小まめに塗り直さなくてはいけないです
Baby Alien 113
ノミの進化形?(^o^)
ラベル:
3D,
Baby Alien,
modo,
TCDW
月曜日, 8月 04, 2025
引き伸ばしレンズ遊び 02
FUJINON EP 50mm F3.5
レンズフロント部分にはEL NIKKORのようにネジキリがありません。また、黒の色紙を妹弟ぶるるんは、本来はラバーキングがあるのですが、新品ではないので・・・。
ということでSONY α NEX-6に装着し、手作りフードをつけた状態です。
手作りフード
FUJINON EP 50mm F3.5
39-42mm 変換リング
7mmマクロチューブアダプタ
12〜19mmヘリコイドアダプタ
1mmマウントアダプタ
Panasonic LUMIX DMC-G3
LUMIX G VARIO 14-42mm/F3.5-5.6 ASPH
物撮りなら問題ないですね。
SONY α NEX-6
FUJINON EP 50mm F3.5
ラベル:
Camera,
EL-Lens,
SONY α NEX-6
TCDW8483
年齢的に少しは日光に当たった方がいいと思うのですが
Baby Alien 112
ワンコから進化した類人犬(^o^)
日曜日, 8月 03, 2025
Excel VBA 49
ExccelでA2とA2セルの色を指定段階の色相グラデに
ExccelでA2とA2セルの色から指定した段階の色相グラデ—ションを作成します。
Sub ApplyHueGradientToColumnB()
Dim ws As Worksheet
Dim startColor As Long, endColor As Long
Dim steps As Integer, i As Integer
Dim startHue As Single, endHue As Single
Dim startSaturation As Single, startBrightness As Single
Dim endSaturation As Single, endBrightness As Single
Dim h As Single, s As Single, b As Single
Set ws = ActiveSheet
startColor = ws.Range("A1").Interior.Color
endColor = ws.Range("A2").Interior.Color
steps = Application._
InputBox("ステップ数を入力してください:", Type:=1)
' RGBからHSBに変換
RGBtoHSB startColor, startHue, startSaturation, startBrightness
RGBtoHSB endColor, endHue, endSaturation, endBrightness
' グラデーションを適用
For i = 0 To steps
h = startHue + (endHue - startHue) * i / steps
s = startSaturation + _
(endSaturation - startSaturation) * i / steps
b = startBrightness + _
(endBrightness - startBrightness) * i / steps
ws.Cells(i + 3, 2).Interior.Color = HSBtoRGB(h, s, b) ' B列に適用
Next i
End Sub
' RGB を HSB に変換
Sub RGBtoHSB(ByVal rgbColor As Long, _
ByRef h As Single, ByRef s As Single, ByRef b As Single)
Dim r As Single, g As Single, bl As Single
Dim minVal As Single, maxVal As Single, delta As Single
r = (rgbColor Mod 256) / 255
g = ((rgbColor ¥ 256) Mod 256) / 255
bl = (rgbColor ¥ 65536) / 255
minVal = WorksheetFunction.Min(r, g, bl)
maxVal = WorksheetFunction.Max(r, g, bl)
delta = maxVal - minVal
b = maxVal ' 明度
If delta = 0 Then
h = 0
s = 0
Else
s = delta / maxVal ' 彩度
If maxVal = r Then
h = (g - bl) / delta
ElseIf maxVal = g Then
h = 2 + (bl - r) / delta
Else
h = 4 + (r - g) / delta
End If
h = h * 60
If h < 0 Then h = h + 360
End If
End Sub
' HSB を RGB に変換
Function HSBtoRGB(ByVal h As Single, _
ByVal s As Single, ByVal b As Single) As Long
Dim r As Single, g As Single, bl As Single
Dim i As Integer, f As Single, p As Single, q As Single, t As Single
If s = 0 Then
r = b: g = b: bl = b
Else
h = h / 60
i = Int(h)
f = h - i
p = b * (1 - s)
q = b * (1 - s * f)
t = b * (1 - s * (1 - f))
Select Case i Mod 6
Case 0: r = b: g = t: bl = p
Case 1: r = q: g = b: bl = p
Case 2: r = p: g = b: bl = t
Case 3: r = p: g = q: bl = b
Case 4: r = t: g = p: bl = b
Case 5: r = b: g = p: bl = q
End Select
End If
HSBtoRGB = RGB(Int(r * 255), Int(g * 255), Int(bl * 255))
End Function
A1とA2セルに基準となる塗りを行い、VBAを実行すると段階数を入力するパレットが表示されるので任意入力すれば・・・
指定段階段階の基準の色の間となる段階の塗りをB列に表示します。
ラベル:
Excel,
VBA,
Visual Basic
登録:
投稿 (Atom)