売れるR18演出(ahegao/喘ぎ擬音/体液/絶頂)の品質を上げる具体タグ・設計
2026-05-30 CC1発行 / dr_gemini 2パス推敲 / R18画像実装DR
### 1. 概要:売れるR18演出の技術的背景とIllustrious-XLの特性
商業R18アニメCG・同人CG集の量産において、「絶頂演出の記号化」は売上を左右する最重要ファクターである。SDXL、特にIllustrious-XL(以下Illustrious)系モデルおよびNoobAI(以下Noob)系モデルは、Danbooruタグの理解度がSD1.5や無印SDXLに比べて飛躍的に向上している。しかし、その強力な表現力ゆえに、以下の3大技術的課題(バグ)が高頻度で発生する。
1. **ホワイトアウト(Cum Flood)**: 体液タグの過剰学習による、画面全体が白濁液で埋まるデッサン崩壊。
2. **眼球ホラー化(Eye Horror)**: アヘ顔指定時、白目を剥きすぎて黒目が完全に消失、または三白眼が不自然に引き裂かれる現象。
3. **身体融合(Onomatopoeia Fusion)**: 擬音や吹き出しタグが、キャラクターの輪郭線や髪、手足と融合して異常なオブジェクトを形成する現象。
本仕様書は、これらの課題をプロンプトエンジニアリング、パラメータ制御、およびADetailerによるマルチパス修復によって完全に克服し、美観を極限まで維持したまま「購買意欲を刺激する絶頂表現」を安定量産するためのテクニカルガイドである。
---
### 2. 具体手順:各演出要素のタグ・重み制御と段階的絶頂表現
#### (1) Ahegao / Tongue Out / Rolling Eyes の制御
アヘ顔の成否は「黒目の残存率」と「舌の接続デッサン」で決まる。Illustrious系では、単一の `ahegao` タグは高確率で顔面崩壊を招くため、以下の「三要素分離制御(Eyes / Mouth / Fluid)」を徹底する。
##### アヘ顔制御のタグ強度と挙動マトリクス
* **`rolling eyes` (推奨強度: `0.6 - 0.8`)**: 黒目を上方向に逃がす。`1.0`を超えると黒目が完全に消失し、ホラー化する。
* **`upturned eyes` (推奨強度: `0.8 - 1.0`)**: 白目を剥きつつも、黒目の下部を視認可能な状態に維持する。最も売れる「恍惚フェイス」に必須。
* **`crossed eyes` (推奨強度: `0.7 - 0.9`)**: 内斜視(寄り目)。ピントが合っていない「脳がとろけた表情」を演出。
* **`tongue out` (推奨強度: `1.0 - 1.2`)**: 口から舌を出す。
* **`pointing tongue` (推奨強度: `0.9 - 1.1`)**: 舌先を尖らせる。フェティシズムの強調。
* **`drool` / `saliva string` (推奨強度: `0.8 - 1.1`)**: 涎と糸引き。口角および舌先からの発生を局所化する。
##### 目的別プロンプト・ブレンド
* **王道・売れ筋恍惚フェイス(美観重視)**:
`((upturned eyes:0.9)), ((crossed eyes:0.7)), (tongue out:1.1), (drool:0.8), open mouth, panting, breathless, heavy blushing`
* **完全絶頂・脳破壊フェイス(ハード表現)**:
`(((ahegao))), (rolling eyes:0.75), (pointing tongue:1.1), (tongue out:1.2), (saliva string:1.0), (spit:0.9), open mouth, head back, closed eyes:0.1`
#### (2) Moaning / Onomatopoeia / Speech Bubble / Heart
テキストレンダリング能力が向上したIllustriousであっても、日本語の複雑な喘ぎ擬音(「はぁ」「ひぎぃ」等)を直接出力させると、画面内に無意味なアルファベットのゴミ(Garbage Text)が浮遊する。これを防ぐため、視覚的記号(ハート、吹き出し)と文字情報を完全に分離して制御する。
##### 喘ぎ・記号演出のタグ設計
* **ハート眼(瞳孔制御)**:
`((heart-shaped pupils:1.15))` または `((heart in eyes:1.1))`。`heart eyes` は目がハートの形そのものにモーフィングしてデッサンが崩れるため、`pupils`(瞳孔)または `in eyes`(瞳の中)に限定指定する。
* **吹き出しスペースの確保(後工程合成前提)**:
`speech bubble, blank speech bubble, white speech bubble` を指定し、文字を入れずに「白いスペース」だけを生成させる。文字はPhotoshop/Clip Studioのレイヤーで乗せるのが最も歩留まりが高い。
* **英字限定の直接レンダリング(インライン出力)**:
どうしても画像生成時に文字を埋め込みたい場合、`"ah!" in speech bubble` や `"haa..." in speech bubble` のように、ダブルクォーテーションで囲んだ3〜5文字の英字に限定し、`onomatopoeia` タグと併用する。
#### (3) Cum / Creampie / Sweat の局所化制御
体液表現の失敗原因は、すべて「発生源の未指定」による全体汚染(Cum Flood)である。これを防ぐため、動詞タグと部位指定タグを厳密に結合する「局所化(Locational Tagging)」を行う。
##### 体液局所化プロンプト設計
* **Creampie(中出し・液垂れ)**:
`((creampie:1.15)), (cum dripping from vagina:1.25), (cum on thighs:1.0), (internal ejaculation:1.1)`
※ `cum` 単体は絶対に使用せず、`dripping from [部位]` で重力をシミュレートする。
* **Facial Cum(顔射・適量)**:
`(cum on face:1.1), (cum on cheeks:0.9), (cum in mouth:1.05), (drool:0.8)`
※ `splash`(飛散)や `spray`(噴射)は、背景や髪を白濁液で汚染するため、ネガティブプロンプトに隔離する。
* **Sweat(愛液・汗の質感向上)**:
`(sweat:1.1), (sweaty skin:1.05), glistening skin, damp skin, flushed skin`
※ `wet skin` は高確率で「水中(underwater)」や「シャワー(shower)」を誘発するため厳禁。`glistening skin`(上気して輝く肌)で代用する。
#### (4) 段階的絶頂表現(Progression of Orgasm)
| 段階 | 演出意図 | ポジティブプロンプト(Illustrious/Noob最適化) | ネガティブプロンプト(段階別排他制御) |
| :--- | :--- | :--- | :--- |
| **Phase 1: 予兆**<br>(我慢・上気) | 絶頂前の焦燥感、体温上昇、微発汗、快感への抵抗。 | `blushing, sweating, biting lip, heavy breathing, trembling, (clenched fists:0.9), tensed body, nervous smile` | `ahegao, rolling eyes, tongue out, cum, creampie, saliva string, exhausted` |
| **Phase 2: 絶頂直前**<br>(恍惚・視線逸らし) | 理性が飛びかける瞬間。ハート瞳孔の出現、涎の糸引き。 | `ecstasy, (crossed eyes:0.85), (heart-shaped pupils:1.1), open mouth, (drool:0.9), (glistening skin:1.1), moaning, head back` | `rolling eyes, creampie, exhausted, blank eyes` |
| **Phase 3: 絶頂**<br>(イク瞬間・アヘ顔) | 完全な絶頂。全身の硬直、白目、大量の体液放出。 | `(((ahegao))), (rolling eyes:1.1), (tongue out:1.2), (pointing tongue:1.0), (spit:1.0), (saliva string:1.1), head back, arching back, (shivering:0.9), (creampie:1.2), (cum dripping from vagina:1.2)` | `calm face, closed mouth, biting lip, looking at viewer` |
| **Phase 4: 賢者・事後**<br>(脱力・余韻) | 完全にイキきった後の脱力感。虚ろな目、中出しの余韻。 | `exhausted, (blank eyes:1.15), (drool dripping:1.1), (creampie:1.25), (cum on thighs:1.1), messy hair, relaxed body, panting, lying on back` | `tensed body, clenched fists, angry, energetic` |
---
### 3. 推奨パラメータ表(Illustrious-XL / NoobAI 基準)
実務において「打率(歩留まり)」を最大化するための設定値。
| パラメータ名 | 設定値 / 推奨値 | 商業量産における技術的理由 |
| :--- | :--- | :--- |
| **Base Model** | `Illustrious-XL-v0.1`系マージモデル / `NoobAI-XL-v1.0`系 | 現行で最もDanbooruタグのセマンティクスを正確に解釈し、R18構図の破綻が少ない。 |
| **Sampling Steps** | `28 - 35` | `28`未満は体液のディテール(半透明感や粘度)が不足し、`35`超は過剰な描き込みで線画が硬化する。 |
| **Sampler** | `DPM++ 2M Karras` または `Euler a` | **液体の質感重視**: `DPM++ 2M Karras`<br>**顔のデッサン安定重視**: `Euler a` |
| **CFG Scale** | `4.5 - 5.5` | Illustrious系はCFGが高すぎると線画が太くなり、アニメ調の透明感が失われる。低め(`5.0`前後)がベスト。 |
| **Size** | `832 x 1216` (縦) / `1216 x 832` (横) | SDXLのネイティブアスペクト比。これ以外の比率は手足の増殖や構図崩壊を誘発する。 |
| **Clip Skip** | `2` | Illustrious/Noobの学習基準値。`1`にするとタグの解釈が極端に劣化する。 |
| **Hires.fix Upscaler** | `Latent (nearest-exact)` または `4x-AnimeSharp` | 倍率: `1.5x`、Denoising Strength: `0.42 - 0.48`。`0.5`を超えると体液の形状が完全に変わり、不自然なオブジェクト化する。 |
| **ADetailer (1st Pass: Face)** | `mediapipe_face_full`<br>Denoising: `0.35 - 0.40` | 顔全体のデッサン崩れを防止。ADetailerプロンプトに `ahegao, tongue out, rolling eyes, drool` を再注入する。 |
| **ADetailer (2nd Pass: Eyes)** | `mediapipe_face_eyes_only`<br>Denoising: `0.25 - 0.30` | 眼球専用パス。`upturned eyes, crossed eyes` をここで再度精密に描画し、ホラー化を防ぐ。 |
---
### 4. 落とし穴と対策(過多防止、NG回避、崩れ対策)
#### ① 液体(Cum)が画面全体を覆う「ホワイトアウト現象」
* **原因**: `cum` または `semen` のタグが、背景やキャラクターの服などの「白い領域」とセマンティック結合し、画面全体に増殖する。
* **対策**:
* ポジティブプロンプトで `cum` を単体で使用せず、必ず `(cum on stomach:1.0)` や `(cum dripping from vagina:1.2)` のように部位を限定する。
* ネガティブプロンプトに以下の「体液抑制ブロック」を必ず挿入する。
`((cum flood:1.4)), ((excessive cum:1.3)), ((ambient cum:1.4)), ((cum covered background:1.4)), (white splash:1.2)`
#### ② アヘ顔指定時の「眼球ホラー化(黒目消失・三白眼の破綻)」
* **原因**: `rolling eyes`(白目)の強度が強すぎる、または `closed eyes`(目を閉じる)や `squinting`(目を細める)といった相反するタグが干渉し、AIが眼球の構造を維持できなくなる。
* **対策**:
* ネガティブプロンプトに `(scary eyes:1.3), (blind:1.2), (deformed eyes:1.3), (pupil-less eyes:1.1)` を指定。
* ADetailerの「Eyes専用パス」を有効化し、メインプロンプトよりも低い強度(`0.25 - 0.30`)で `upturned eyes` を再描画する。
#### ③ 擬音・吹き出しによる「キャラクターの身体欠損・融合」
* **原因**: `speech bubble`(吹き出し)や `onomatopoeia`(擬音)の境界線が、キャラクターの髪の毛や輪郭線と融合し、体の一部が吹き出しに変化する。
* **対策**:
* `speech bubble` を使用する際は、`isolated speech bubble`(独立した吹き出し)や `clean background` を同時に指定し、キャラクターの体から物理的に離す。
* ネガティブプロンプトに `(speech bubble merging with body:1.3), (text on body:1.2)` を指定。
* 最も安全な実務フロー:生成時は `speech bubble` を一切使用せず、後工程でClip Studio等の「吹き出しブラシ」を用いて合成する。
---
### 5. 実装コード設計
以下は、WebUI (A1111/Forge) APIを介して、段階的絶頂表現と体液制御を自動化するためのPython動的プロンプト生成コードである。ADetailerのマルチパス(顔・目)設定をAPIペイロードに完全反映している。
```python
import json
import requests
from typing import Dict, Any
class R18PromptEngine:
"""
R18アニメCG量産用・動的プロンプト生成&API送信エンジン
"""
def __init__(self, base_url: str = "http://127.0.0.1:7860"):
self.api_url = f"{base_url}/sdapi/v1/txt2img"
# クオリティ基本タグ(Illustrious / NoobAI 向け最適化)
self.base_positive = "masterpiece, best quality, very aesthetic, cinematic lighting, finely detailed, "
self.base_negative = "lowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry, artist name, "
def get_stage_tags(self, stage: str) -> Dict[str, str]:
stages = {
"foreplay": {
"positive": "blushing, sweating, heavy breathing, biting lip, trembling, anticipation, tensed body",
"negative": "ahegao, rolling eyes, tongue out, cum, creampie, saliva string, exhausted"
},
"climax_pre": {
"positive": "ecstasy, (crossed eyes:0.85), (heart-shaped pupils:1.1), open mouth, (drool:0.9), (glistening skin:1.1), moaning, head back",
"negative": "rolling eyes, creampie, exhausted, blank eyes"
},
"climax": {
"positive": "(((ahegao))), (rolling eyes:0.75), (crossed eyes:0.8), (tongue out:1.2), (pointing tongue:1.0), (saliva string:1.1), head back, arching back, (shivering:0.9)",
"negative": "calm face, closed mouth, biting lip, looking at viewer"
},
"aftercare": {
"positive": "exhausted, (blank eyes:1.15), (drool dripping:1.1), messy hair, relaxed body, panting, lying on back",
"negative": "tensed body, clenched fists, angry, energetic"
}
}
return stages.get(stage, stages["climax"])
def get_cum_tags(self, level: str) -> Dict[str, str]:
levels = {
"none": {
"positive": "",
"negative": "cum, semen, creampie, facial cum, vaginal cum"
},
"moderate": {
"positive": "((creampie:1.1)), (cum dripping from vagina:1.15), (cum on stomach:0.9)",
"negative": "((cum flood:1.4)), ((excessive cum:1.3)), ((ambient cum:1.4)), (cum on face:1.2)"
},
"heavy": {
"positive": "((creampie:1.2)), (cum dripping from vagina:1.25), (cum on face:1.1), (cum on thighs:1.1), (cum on stomach:1.0)",
"negative": "((cum flood:1.4)), ((ambient cum:1.4))"
}
}
return levels.get(level, levels["moderate"])
def build_payload(self, character_tags: str, stage: str, cum_level: str, width: int = 832, height: int = 1216) -> Dict[str, Any]:
stage_tags = self.get_stage_tags(stage)
cum_tags = self.get_cum_tags(cum_level)
# プロンプト結合
positive_prompt = f"{self.base_positive}{character_tags}, {stage_tags['positive']}, {cum_tags['positive']}"
negative_prompt = f"{self.base_negative}{stage_tags['negative']}, {cum_tags['negative']}, ((scary eyes:1.3)), ((blind:1.2)), ((deformed eyes:1.3)), ((speech bubble merging with body:1.3))"
# ADetailer設定(1st Pass: 顔全体, 2nd Pass: 目元)
adetailer_args = [
True, # ADetailerを有効化
False, # 1st passのみ実行フラグ(Falseで複数実行)
{
"ad_model": "mediapipe_face_full",
"ad_prompt": f"ahegao, tongue out, rolling eyes, drool, {character_tags}",
"ad_negative_prompt": "scary eyes, blind, deformed eyes, bad anatomy",
"ad_confidence": 0.3,
"ad_mask_blur": 4,
"ad_denoising_strength": 0.38,
"ad_inpaint_width": 512,
"ad_inpaint_height": 512,
"ad_inpaint_full_res": True,
"ad_inpaint_full_res_padding": 32,
"ad_use_inpaint_width_height": True
},
{
"ad_model": "mediapipe_face_eyes_only",
"ad_prompt": "upturned eyes, crossed eyes, heart-shaped pupils",
"ad_negative_prompt": "scary eyes, blind, pupil-less eyes",
"ad_confidence": 0.3,
"ad_mask_blur": 4,
"ad_denoising_strength": 0.28,
"ad_inpaint_width": 256,
"ad_inpaint_height": 256,
"ad_inpaint_full_res": True,
"ad_inpaint_full_res_padding": 16,
"ad_use_inpaint_width_height": True
}
]
payload = {
"prompt": positive_prompt,
"negative_prompt": negative_prompt,
"steps": 30,
"cfg_scale": 5.0,
"sampler_name": "DPM++ 2M Karras",
"width": width,
"height": height,
"restore_faces": False, # GFPGAN等の干渉を防ぐため必ずFalse
"alwayson_scripts": {
"ADetailer": {
"args": adetailer_args
}
}
}
return payload
def generate_image(self, character_tags: str, stage: str, cum_level: str) -> Dict[str, Any]:
payload = self.build_payload(character_tags, stage, cum_level)
try:
response = requests.post(self.api_url, json=payload, timeout=120)
if response.status_code == 200:
return response.json()
else:
print(f"Error: API returned status code {response.status_code}")
return {}
except Exception as e:
print(f"Exception occurred: {str(e)}")
return {}
# 実行テスト
if __name__ == "__main__":
engine = R18PromptEngine()
# 例:金髪巨乳キャラクターの絶頂(Climax)段階、中出し量(Moderate)のAPIペイロード生成
test_payload = engine.build_payload(
character_tags="1girl, solo, solo focus, tsunade, blonde hair, large breasts, bare shoulders",
stage="climax",
cum_level="moderate"
)
print(json.dumps(test_payload, indent=2, ensure_ascii=False))
```
---
### 6. リリース前品質チェックリスト
商業検品基準を満たしているか確認するための、ピクセルレベルの合否判定チェックリスト。
#### 【眼球・視線】
* [ ] **黒目の残存率(合否ライン:15%以上)**: `rolling eyes`指定時、黒目が完全に上部に隠れて「白目だけのゾンビ顔」になっていないか。黒目の下部がわずかに見えている、または寄り目(`crossed eyes`)で焦点が合っていない状態が維持されていること。
* [ ] **瞳孔の形状**: `heart-shaped pupils`指定時、ハートマークが崩れて「不規則な多角形」や「ただの赤いシミ」になっていないか。
* [ ] **左右の整合性**: 左右の眼球の向き(ベクトル)が極端に乖離し、斜視の許容範囲を超えた「寄り目バグ」になっていないか。
#### 【口・舌・唾液】
* [ ] **舌の接続デッサン**: `tongue out`指定時、舌が下唇や顎の皮膚から直接生えているような構造的破綻がないか。必ず「口腔内」から舌が伸びていること。
* [ ] **唾液の物理的整合性**: `drool`(涎)や `saliva string`(糸引き)が、空中から不自然に発生していないか。必ず「口角」「舌先」「下唇」を起点として重力に従って下方向に描画されていること。
#### 【体液(Cum)】
* [ ] **発生源の特定**: `cum` がキャラクターの体や背景から浮遊して「空中の白い帯」になっていないか。膣口、太もも、下腹部、顔のいずれかの皮膚に密着し、立体感(ハイライトと影)を持っていること。
* [ ] **ホワイトアウトの回避**: 画面の面積比で、白い液体が全体の30%以上を占めてキャラクターの輪郭を侵食していないか。
* [ ] **粘度と透明度**: 液体が単なる「不透明なペンキ」になっていないか。エッジ部分にわずかな半透明感と、肌への反射光(ハイライト)が描写されていること。
#### 【構図・文字ノイズ】
* [ ] **文字化けの排除**: 画面の隅や背景に、AIが自動生成した「解読不能なアルファベットの羅列」や「崩れた記号」が浮遊していないか。
* [ ] **吹き出しの独立性**: `speech bubble`指定時、吹き出しの境界線がキャラクターの髪の毛や衣服、手足と融合してデッサンを破壊していないか。