木曜日, 9月 18, 2025
水曜日, 9月 17, 2025
modoローポリモデリング 63
対称化のエラーは鏡面で乗り切る
modo 17.1v1は、アップデートが望めないので、謎のエラー対策は重要ですね。ということで対称化の謎エラー対策です。
適当なオブジェクトを対称化すると・・・
コピーの形状がおかしなことになるケースが多いです。
[TAB]キーでサブディビジョンをオンorオフすると上のアラートが出ます。
何が問題なのかは確認できますが、修正は正直イライラしますので、諦めて・・・
鏡面を使います。
ただし、基準点の位置指定は画面をある程度拡大してから処理する必要があります。そうしないと、その後の対称処理が有効になりません。
modo 17.1v1
ラベル:
3D,
modo,
modo_Low_Polygon
火曜日, 9月 16, 2025
PowerPointで単語の文字をバラバラにして爆縮イメージ作成
PowerPointで、単語の文字をバラバラにして爆縮(爆発の逆)イメージ作成する手順を整理しました。
ここでは9文字で構成されている単語なので放射線は40度置きに配置し、その上に文字を配置します。コレをJPG等で書き出してから背景に配置してアタリとするか・・・
そのまま[図形の書式]>[オブジェクトの選択と表示]にて全てのパーツをロックし、そのままアタリとします。
テキストデータを隠すように矩形を作成し、全体を選択して[図形の書式]>[図形の結合]>[切り出し]を実行するとテキストデータはバラバラの図形になります。
余分なパーツを削除します。
ここから1文字ずつアニメーションを設定します。
90度の放射位置に1つ置きに図形化した文字を配置します。
[アニメーション]>[アニメーションの軌跡]>[直線]
次に、1つ目意外のアニメーションを全て[アニメーション]>[アニメーションウィンドウ]で[直前の動作と同時]に設定。90度の放射位置は1つ置きに配置しています。
この段階の動作状態です。
背景画像を変更し、文字図形の色を白に変更すれば完成です。
最終的な動作状態です。
ラベル:
Office,
PowerPoint
月曜日, 9月 15, 2025
露出計シリーズ08
【SEKONIC STUDIO DELUXE L-398】
学生の頃に頑張って購入した名機SEKONIC STUDIO DELUXE L-398。何度か触れていますが、悲しいことに同級生へコミック本数巻とともに貸し出したまま現在も戻ってきていません。
本格的に写真を勉強した頃の道具で、思い入れもあり出物を見つけたのでゲットしました。現行品はSTUDIO DELUXE III L398Aで仕様が少し変更されているので当時のSTUDIO DELUXE L-398を物色していたわけです。これは電池不要で完全なメカニカル構造なのが良いですね。
取扱説明書はメーカーサイトのPDFで確認できますが、流石に思い入れがあったようで直ぐに操作方法を思い出しました。調べたところ1963年に発売されたSTUDIO DELUXE L-28からデザインはほとんど変わっていないので60年以上続く名機ですね。
Panasonic LUMIX DMC-G3
LUMIX G VARIO 14-42mm/F3.5-5.6 ASPH
TCDW8525
パーティーを開くのが流行っていました
Baby Alien 148
なんとかボール系(^o^)
ラベル:
3D,
Baby Alien,
modo,
TCDW
日曜日, 9月 14, 2025
Photoshopでbit/channel別グラデーションの差異
Photoshopで基本的にあまり使うことがないbit/channelは8bit/channelがお約束です。しかし、グラデーションを意識する場合は16bit/channelがお薦めです。
8bit/channelでデフォルトの黒から白のグラデーション。
16bit/channelでデフォルトの黒から白のグラデーション。
グラデーションのままだとに肉眼ではあまり差異を感じませんが、ポスタリゼーションにすると境界部分に粗が出てきます。
8bit/channelでデフォルトの黒から白のグラデーションを[イメージ]>[色調補正]>[ポスタリゼーション]にて[階調数:10]を実行。
16bit/channelでデフォルトの黒から白のグラデーションを[イメージ]>[色調補正]>[ポスタリゼーション]にて[階調数:10]を実行。
8bit/channelの部分拡大。ノイズが目立っています。
16bit/channelの部分拡大。ノイズは確認できません。非常に綺麗です。もちろん処理後に8bit/channelに戻しますが、戻しても処理結果は変わらないので、グラデーションは16bit/channelで処理してから8bit/channelに戻す流れがベストですが、サイズなども考慮するとケースバイケースですね。
ラベル:
Photoshop
土曜日, 9月 13, 2025
明瞭さ、読みやすさを追求した intel-one-monoフォント
Intelが開発したコーディング向け等幅フォント Intel One Mono は、ロービジョン(弱視)開発者のために、明瞭さ、読みやすさを追求したフォント。商用利用や改変、アプリ・ゲームなどへの組み込みも可能だそうです。和文は未対応ですが組み合わせで任意のフォントと組み合わせれば使えますね。ロービジョンではなくても可読性が高くて使い勝手がいいです。
Intel One Mono Regular + メイリオ Regular
Intel One Mono Italic + メイリオ Regular
Intel One Mono Light + メイリオ Regular
Intel One Mono Light Italic + メイリオ Regular
Intel One Mono Medium + メイリオ Regular
Intel One Mono Medium Italic + メイリオ Regular
Intel One Mono Bold + メイリオ Bold
Intel One Mono Bold Italic + メイリオ Bold
ラベル:
Font
金曜日, 9月 12, 2025
JavaScriptでAI遊び 67
Illustratorでスピログラフを描画

Illustratorでスピログラフを描画させてみました。
■スピログラフのパラメータ
外側の固定円(半径 R)
内側の回転円(半径 r)
描画点の距離 d(内円の中心からの距離)
ステップ数 s(1ユニットのパス数)
角度 θ(回転角)
■スピログラフの方程式
スピログラフの曲線 (x, y) は、以下のパラメータ方程式で表されます。
基本形(ハイポサイクロイド)
x(θ)=(R-r)cos(θ)+d cos(((R-r)r)θ)
y(θ)=(R-r)sin(θ)-d sin(((R-r)r)θ)
ここで:
θ は回転角(0 から 2π × ループ回数 まで変化)
(R - r) の比が整数であれば閉じた軌跡になる
#target illustrator
function drawSpirograph(doc, centerX, centerY, R, r, d,
steps, rotations) {
var path = doc.pathItems.add();
path.stroked = true;
path.filled = false;
path.strokeWidth = 1;
var points = [];
for (var i = 0; i <= steps * rotations; i++) {
var theta = (Math.PI * 2 * i) / steps;
var x = (R - r) * Math.cos(theta) +
d * Math.cos(((R - r) / r) * theta);
var y = (R - r) * Math.sin(theta) -
d * Math.sin(((R - r) / r) * theta);
points.push([centerX + x, centerY + y]);
}
var pathPoints = path.pathPoints;
for (var j = 0; j < points.length; j++) {
var p = pathPoints.add();
p.anchor = points[j];
p.leftDirection = p.anchor;
p.rightDirection = p.anchor;
}
}
// ユーザー入力ダイアログを表示
function getUserInput() {
var dialog = new Window("dialog", "スピログラフ設定");
dialog.add("statictext", undefined, "外円の半径 (R):");
var RInput = dialog.add("edittext", undefined, "150");
RInput.characters = 5;
dialog.add("statictext", undefined, "内円の半径 (r):");
var rInput = dialog.add("edittext", undefined, "70");
rInput.characters = 5;
dialog.add("statictext", undefined, "ペンの距離 (d):");
var dInput = dialog.add("edittext", undefined, "100");
dInput.characters = 5;
dialog.add("statictext", undefined, "ステップ数:");
var stepsInput = dialog.add("edittext", undefined, "200");
stepsInput.characters = 5;
dialog.add("statictext", undefined, "回転数:");
var rotationsInput = dialog.add("edittext", undefined, "10");
rotationsInput.characters = 5;
var okButton = dialog.add("button",
undefined, "OK", {name: "ok"});
var cancelButton = dialog.add("button",
undefined, "キャンセル", {name: "cancel"});
var result = null;
okButton.onClick = function () {
result = {
R: parseFloat(RInput.text),
r: parseFloat(rInput.text),
d: parseFloat(dInput.text),
steps: parseInt(stepsInput.text, 10),
rotations: parseInt(rotationsInput.text, 10)
};
dialog.close();
};
cancelButton.onClick = function () {
result = null;
dialog.close();
};
dialog.show();
return result;
}
// メイン処理
function main() {
if (app.documents.length === 0) {
app.documents.add();
}
var doc = app.activeDocument;
var centerX = doc.artboards[0].artboardRect[2] / 2;
var centerY = doc.artboards[0].artboardRect[3] / 2;
var userInput = getUserInput();
if (!userInput) return;
drawSpirograph(doc, centerX, centerY, userInput.R, userInput.r,
userInput.d, userInput.steps, userInput.rotations);
}
main();
実行して、各パラメーターの値を入力すれば描画が実行されます。パスの塊です。
パラメーター変更例(その1)
パラメーター変更例(その2)
パラメーター変更例(その3)
ラベル:
Illustrator,
JavaScript
木曜日, 9月 11, 2025
Let's start JavaScript 82
HTMLで複数の数値で作れる合計全表示
必要にせまられたので・・・
HTMLで複数の数値から作れる合計を重複を除きすべて表示させます。
例えば・・・
1,2,3の場合・・・
1
2
3
1+3=4
2+3=5
1+2+3=6
となります。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>合計組み合わせ</title>
<style>
body {
font-family: sans-serif;
padding: 20px;
display: flex;
flex-direction: column;
align-items: center;
background: black;
color: white;
}
input {
width: 200px;
padding: 5px;
}
</style>
</head>
<body>
<h3>複数の数値から作れる合計をすべて表示</h3>
<p>数値を入力してください(半角, 区切り):</p>
<span>
<input type="text" size="28" id="inputNumbers"
value="7,14,28,9,16,30">
 
<button onclick="showSums()">合計を表示</button></span>
<h4>合計一覧(重複なし)</h4>
<div id="results"></div>
<script>
function showSums() {
const input = document.getElementById('inputNumbers').value;
const numbers = input.split(',').map(n =>
parseInt(n.trim(), 10)).filter(n => !isNaN(n));
const resultSet = new Set();
const n = numbers.length;
for (let i = 1; i < (1 << n); i++) {
let sum = 0;
for (let j = 0; j < n; j++) {
if (i & (1 << j)) {
sum += numbers[j];
}
}
resultSet.add(sum);
}
const sortedSums =
Array.from(resultSet).sort((a, b) => a - b);
document.getElementById('results').innerHTML =
sortedSums.join(', ');
}
</script>
</body>
</html>

実行直後の画面。

デフォルト値のまま[合計を表示]をクリックすれば、複数の入力数値から作れる合計を重複を除きすべて表示します。

入力値はボックスに入力できるまで入れることが出来ます。
ラベル:
HTML,
JavaScript
登録:
投稿 (Atom)