金曜日, 10月 31, 2025
TCDW8571
ということは20年使っていることになります
今は無きSANYOのエネループを愛用しているのですが、最後に購入したのが12年前。勿論その前から使っているので、多分一番古いのは発売年の2005年。ということは20年使っていることになります。長持ちです。
ラベル:
illustration,
Photoshop,
TCDW
木曜日, 10月 30, 2025
JavaScriptでAI遊び 77
Illustratorでアンカーポイントの折れたハンドル修正

パスのアンカーポイントのハンドルが異なる向きを向いている場合に、それらを一直線に揃えてみました。
// 選択されたパスの折れたハンドルを修正して滑らかにする
(function () {
if (app.documents.length === 0) {
alert("ドキュメントを開いてください");
return;
}
var sel = app.activeDocument.selection;
if (sel.length === 0) {
alert("パスオブジェクトを選択してください");
return;
}
for (var i = 0; i < sel.length; i++) {
if (sel[i].typename === "PathItem") {
fixHandles(sel[i]);
}
}
function fixHandles(path) {
var pts = path.pathPoints;
for (var j = 0; j < pts.length; j++) {
var p = pts[j];
// コーナーポイントはスキップ
if (p.pointType === PointType.CORNER) continue;
var anchor = p.anchor;
var left = p.leftDirection;
var right = p.rightDirection;
// 方向線の角度を揃える
var vecL = [left[0] - anchor[0], left[1] - anchor[1]];
var vecR = [right[0] - anchor[0], right[1] - anchor[1]];
var lenL = Math.sqrt(vecL[0] * vecL[0] + vecL[1] * vecL[1]);
var lenR = Math.sqrt(vecR[0] * vecR[0] + vecR[1] * vecR[1]);
// 左右の長さの平均を使って対称化
var len = (lenL + lenR) / 2;
// 左ハンドルの角度を基準にする(右は反対方向)
var angle = Math.atan2(vecL[1], vecL[0]);
if (lenL === 0 && lenR !== 0) {
// 左がゼロなら右を基準
angle = Math.atan2(vecR[1], vecR[0]) + Math.PI;
}
// 左ハンドル
p.leftDirection = [
anchor[0] + Math.cos(angle) * len,
anchor[1] + Math.sin(angle) * len
];
// 右ハンドル(反対方向)
p.rightDirection = [
anchor[0] - Math.cos(angle) * len,
anchor[1] - Math.sin(angle) * len
];
// スムーズポイントに変更
p.pointType = PointType.SMOOTH;
}
}
alert("ハンドルを修正しました");
})();

私はIllustratorもタブレットペン利用なので、ブラシで自由曲線を描くことが多いです。
生成したパスを単純化させると、ハンドルが折れて生成されることが多いので・・・
スクリプトを実行(※)すると・・・
※ハンドルがある点を滑らか化
左右のハンドルを一直線に揃え、
長さは左右の平均値にする
コーナーポイントは変更しない
ハンドルは水平に変更されます。
元のパスの複製を予め作成して、ガイドに変更してから修正すれば・・・
折れてないハンドルのパスが出来ます。でも、最初からペンツールで修正した方が速かった感じですね。ちなみに、出来る時と出来ない時があり、状況整理中です(>_<)
ラベル:
Illustrator,
JavaScript
TCDW8570
取りあえずサイトの更新を本気モードにしないと
10/08にkaizu.comがダウンし、何が何だか解らない状態が続き、同じレジストラを利用している友人やサポートを買って出てくれた友人の協力で、それなりに行動していたのですが、何の説明もなく10/27に復活していました。サイトはほとんど放置状態だったのですが、兎に角メインメールが使えない3週間は本当に難儀しました。復活も完全なのか謎のまま。調べたら25年以上利用していたので、まさに「青天の霹靂」でした。取りあえずサイトの更新を本気モードにしないと・・・。
ラベル:
illustration,
Photoshop,
TCDW
水曜日, 10月 29, 2025
Let's start JavaScript 85
指定画像をヴェイパーウェーブ風画像変換

指定画像をヴェイパーウェーブ風画像に変換します。あくまでも「〜風」です(^o^)
<!-- index.html -->
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, initial-scale=1.0">
<title>ヴェイパーウェーブ風画像変換</title>
<style>
body {
background-color: #111;
color: #fff;
font-family: "Poppins", sans-serif;
text-align: center;
}
canvas {
margin-top: 20px;
max-width: 90%;
border: 2px solid #ff66cc;
box-shadow: 0 0 20px #ff00ff;
}
input {
margin-top: 20px;
}
</style>
</head>
<body>
<h2>ヴェイパーウェーブ風画像変換</h2>
<canvas id="canvas"></canvas><br>
<input type="file" accept="image/*" id="imageInput">
<!--
input type="file"で
[ファイルを選択]選択されていません 。Google Crome
[参照]ファイルが選択されていません 。firefox
など、ブラウザに寄り異なります。
-->
<script>
const fileInput = document.getElementById('imageInput');
const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d');
fileInput.addEventListener('change', (e) => {
const file = e.target.files[0];
if (!file) return;
const img = new Image();
img.onload = () => {
canvas.width = img.width;
canvas.height = img.height;
ctx.drawImage(img, 0, 0);
// ピクセルデータを取得
const imageData = ctx.getImageData
(0, 0, canvas.width, canvas.height);
const data = imageData.data;
// コントラスト・彩度調整 + ピンク・シアン調色
for (let i = 0; i < data.length; i += 4) {
let r = data[i];
let g = data[i + 1];
let b = data[i + 2];
// コントラスト強調
const contrast = 1.4;
r = ((r - 128) * contrast + 128);
g = ((g - 128) * contrast + 128);
b = ((b - 128) * contrast + 128);
// 彩度アップ(簡易)
const avg = (r + g + b) / 3;
r = r + (r - avg) * 0.5;
g = g + (g - avg) * 0.5;
b = b + (b - avg) * 0.5;
// ヴェイパーウェーブ調の色合い
r += 20;
g += 0;
b += 40;
// 範囲制限
data[i] = Math.min(255, Math.max(0, r));
data[i + 1] = Math.min(255, Math.max(0, g));
data[i + 2] = Math.min(255, Math.max(0, b));
}
ctx.putImageData(imageData, 0, 0);
// グラデーションオーバーレイ
const gradient = ctx.createLinearGradient
(0, 0, canvas.width, canvas.height);
gradient.addColorStop(0, 'rgba(255,0,255,0.2)');
gradient.addColorStop(1, 'rgba(0,255,255,0.2)');
ctx.fillStyle = gradient;
ctx.fillRect(0, 0, canvas.width, canvas.height);
// ノイズ追加
const noiseDensity = 0.03;
const noise = ctx.getImageData
(0, 0, canvas.width, canvas.height);
const nData = noise.data;
for (let i = 0; i < nData.length; i += 4) {
if (Math.random() < noiseDensity) {
const v = (Math.random() - 0.5) * 60;
nData[i] += v;
nData[i + 1] += v;
nData[i + 2] += v;
}
}
ctx.putImageData(noise, 0, 0);
};
img.src = URL.createObjectURL(file);
});
</script>
</body>
</html>
<!-- index.html -->
実行したら画像を指定するだけです。

元画像はIllustratorで作成し、Photoshopに配置(※)してjogで書き出し。
※Illustratorにはチャンネルという概念が無いので
結果はこんな感じです。やっぱり画像に大きく影響します。色々試行錯誤すると感覚が掴めます。
ラベル:
HTML,
JavaScript
TCDW8569
真逆と理解すれば素敵な情報源ですね
Baby Alien 160
バレリーナを目指す(^o^)
ラベル:
3D,
Baby Alien,
modo,
TCDW
火曜日, 10月 28, 2025
modoローポリモデリング 65
出っ張りはベベルではなくブリッジもOK
出っ張りはベベルではなくブリッジでも作れます。あんがいコレの方が作りやすいかも。
任意の頂点を選択し・・・
ベベルで面を作成し手から・・・
control X(command X)で切り取ってからcontrol V(command V)で同じ位置にペースト後に移動します。
続けてエッジを選択し、[複製]>[ブリッジ]を実行。上図のようになってしまったら・・・
選択したエッジを[ポリゴン]>[生成]を実行すれば出っ張りが出来上がります。
ここで、[D]キーでポリゴン数を増やし・・・
対象設定としてから、目の位置あたりのポリゴンに対してベベルを2重に設定してから・・・
押し込んで目とします。続けて口のあたりのエッジを選択して・・・
ベベルを2重に設定してから押し込んで口とします。
細部を調整して顔モドキの完成です。
modo 17.1v1
ラベル:
3D,
modo,
modo_Low_Polygon
TCDW8568
充電器が見つからずに右往左往で1時間
カメラの充電器が見つからずに右往左往で1時間。やっと見つけた充電器にメーカー純正のコネクターが合わない。色々調べたら、充電器用はUSB Type-C、本体充電用はMicro USB Type-B・・・なんで違うの?
ラベル:
illustration,
Photoshop,
TCDW
月曜日, 10月 27, 2025
PhotoshopでカラーリングをVAPORWAVE風に(2)
PhotoshopでカラーリングをVAPORWAVE風に 2025/10/25
今回はIllustratorで作成した青みの強いデータをPhotoshopに配置(※)して処理してみました。
※Illustratorにはチャンネルという概念が無いので
今回もブルーチャンネルをcontrol(command)キーを併用してクリックしてブルーチャンネルの明るい部分を選択として取得します。
そのままレイヤーに移動して[マゼンタ〜イエロー〜マゼンタ]のグラデーションを設定します。ただし、今回はブルーチャンネルのコントラストが低いので、[イメージ]>[自動コントラスト]を実行してコントラストを上げています。
グラデーションは必要にい応じて位置や色を調整します。
完成イメージはこんな感じです。やはりイラストの方がいい感じですね。
ラベル:
Photoshop
日曜日, 10月 26, 2025
Illustratorでの作図基本 29
スキャンデータのトレースと解像度
IllustratorデータをプリントアウトしてからPDFとしてスキャンし、Illustratorに配置してトレースした場合と、Illustratorの元データをスキャンした場合を比較してみました。
それぞれを個別にラスタライズし・・・
トレースしてみました。
元データで解像度の影響が出やすい部分のアップ。
解像度72ppiをトレースした結果。
解像度150ppiをトレースした結果。
解像度300ppiをトレースした結果。
解像度600ppiをトレースした結果。
こうして比較してみると最低150ppi は必要ですね。
ラベル:
Illustrator
土曜日, 10月 25, 2025
PhotoshopでカラーリングをVAPORWAVE風に
PhotoshopでカラーリングをVAPORWAVE(ヴェイパーウェーブ)風にチャレンジです。
以下も参考にしてください。
PhotoshopでカラーリングをVAPORWAVE風に(2)2025/10/27
元画像です。
ブルーチャンネルをcontrol(command)キーを併用してクリックしてブルーチャンネルの明るい部分を選択として取得します。
そのままレイヤーに移動してマゼンタから白のグラデーションを設定します。
作成したグラデーションの描画モードを乗算にすれば・・・
ソレっぽい雰囲気がでます。ただし、画像の状況に大きく左右される点に注意です。写真を加工するよりもイラストの方が楽かも・・・。
ラベル:
Photoshop
登録:
コメント (Atom)

















































