Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion mmd_tools_append/asset_search/panels.py
Original file line number Diff line number Diff line change
Expand Up @@ -340,7 +340,7 @@ def draw(self, context):
"tags",
query,
"tags_index",
type="GRID",
type="DEFAULT",
columns=max(1, int(context.region.width / 250)),
rows=2,
)
Expand Down
2 changes: 1 addition & 1 deletion mmd_tools_append/checkers/operators.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ def check_blender_version(_context: bpy.types.Context):
def check_render_engine(context: bpy.types.Context):
return CheckResult(
_("Render Engine"),
CheckResultStatus.GOOD if context.scene.render.engine == "BLENDER_EEVEE_NEXT" else CheckResultStatus.BAD,
CheckResultStatus.GOOD if context.scene.render.engine in ["BLENDER_EEVEE_NEXT", "BLENDER_EEVEE"] else CheckResultStatus.BAD,
0,
"scene.render.engine",
_("= Eevee is Good"),
Expand Down
44 changes: 36 additions & 8 deletions mmd_tools_append/editors/nodes.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

import os
from abc import ABC, abstractmethod
from typing import Any, Dict, Iterable, Optional, Tuple, Union
from typing import Any, Dict, Iterable, List, Optional, Tuple, Union

import bpy

Expand Down Expand Up @@ -91,11 +91,17 @@ def get_node(self, node_type: type, label: str = None, name: str = None) -> bpy.

return self.new_node(node_type, label, name)

def get_node_frame(self, label: str = None, name: str = "mmd_append_node_frame") -> bpy.types.NodeFrame:
return self.get_node(bpy.types.NodeFrame, label=label, name=name)
def get_node_frame(self, label: str = None, names: List[str] = ["mmd_append_node_frame", "uuunyaa_node_frame"]) -> bpy.types.NodeFrame:
for name in names:
node = self.get_node(bpy.types.NodeFrame, label=label, name=name)
if node:
return node

def find_node_frame(self, label: str = None, name: str = "mmd_append_node_frame") -> bpy.types.NodeFrame:
return self.find_node(bpy.types.NodeFrame, label=label, name=name)
def find_node_frame(self, label: str = None, names: List[str] = ["mmd_append_node_frame", "uuunyaa_node_frame"]) -> bpy.types.NodeFrame:
for name in names:
node = self.find_node(bpy.types.NodeFrame, label=label, name=name)
if node:
return node

def remove_node_frame(self, node_frame: bpy.types.NodeFrame):
for node in self.list_nodes(node_frame=node_frame):
Expand Down Expand Up @@ -129,13 +135,13 @@ def set_node_inputs(self, node: bpy.types.Node, values: Dict[str, Any], force=Fa
return node

_adjusters_node_frame_label = "MMD Append Adjusters"
_adjusters_node_frame_name = "mmd_append_adjusters_node_frame"
_adjusters_node_frame_name = ["mmd_append_adjusters_node_frame", "uuunyaa_adjusters_node_frame"]

def find_adjusters_node_frame(self) -> bpy.types.NodeFrame:
return self.find_node_frame(label=self._adjusters_node_frame_label, name=self._adjusters_node_frame_name)
return self.find_node_frame(label=self._adjusters_node_frame_label, names=self._adjusters_node_frame_name)

def get_adjusters_node_frame(self) -> bpy.types.NodeFrame:
return self.get_node_frame(label=self._adjusters_node_frame_label, name=self._adjusters_node_frame_name)
return self.get_node_frame(label=self._adjusters_node_frame_label, names=self._adjusters_node_frame_name)


class MaterialEditor(NodeEditor):
Expand Down Expand Up @@ -360,3 +366,25 @@ def draw_setting_shader_node_properties(self, layout: bpy.types.UILayout, nodes:
if node_input.is_linked:
continue
col.prop(node_input, "default_value", text=node_input.name)

def copy_node_group_inputs(self, source):
src_editor = MaterialEditor(source)

dst_node_frame = self.find_node_frame()
src_node_frame = src_editor.find_node_frame()
if src_node_frame is None or dst_node_frame is None:
return

src_groups = list(src_editor.list_nodes(node_type=bpy.types.ShaderNodeGroup, node_frame=src_node_frame))
dst_groups = list(self.list_nodes(node_type=bpy.types.ShaderNodeGroup, node_frame=dst_node_frame))

src_dict = {node.name: node for node in src_groups}
for dst_node in dst_groups:
src_node = src_dict.get(dst_node.name)
if src_node is None:
continue
for src_input, dst_input in zip(src_node.inputs, dst_node.inputs):
try:
dst_input.default_value = src_input.default_value
except Exception:
pass
30 changes: 16 additions & 14 deletions mmd_tools_append/editors/operators.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,11 @@ def poll(cls, context):
return True

def execute(self, context):
if context.scene.render.engine != "BLENDER_EEVEE_NEXT":
context.scene.render.engine = "BLENDER_EEVEE_NEXT"
if context.scene.render.engine not in ["BLENDER_EEVEE_NEXT", "BLENDER_EEVEE"]:
try:
context.scene.render.engine = "BLENDER_EEVEE_NEXT"
except TypeError:
context.scene.render.engine = "BLENDER_EEVEE"

eevee = context.scene.eevee

Expand All @@ -40,11 +43,6 @@ def execute(self, context):
# > Viewport: 8
eevee.taa_samples = 16

# Ambient Occlusion: enable
eevee.use_gtao = True
# > Distance: 0.1 m
eevee.gtao_distance = 0.100

# Depth of Field
# > Max Size: 16 px
eevee.bokeh_max_size = 16.000
Expand All @@ -58,6 +56,12 @@ def execute(self, context):
# Ray-tracing: True
eevee.use_raytracing = True

# Ambient Occlusion: enable (Fast GI with AO mode)
eevee.use_fast_gi = True
eevee.fast_gi_method = "AMBIENT_OCCLUSION_ONLY"
# > Distance: 0.1 m
eevee.fast_gi_distance = 0.100

# Film > Transparent
context.scene.render.film_transparent = self.film_transparent

Expand Down Expand Up @@ -85,8 +89,11 @@ def poll(cls, context):
return True

def execute(self, context):
if context.scene.render.engine != "BLENDER_EEVEE_NEXT":
context.scene.render.engine = "BLENDER_EEVEE_NEXT"
if context.scene.render.engine not in ["BLENDER_EEVEE_NEXT", "BLENDER_EEVEE"]:
try:
context.scene.render.engine = "BLENDER_EEVEE_NEXT"
except TypeError:
context.scene.render.engine = "BLENDER_EEVEE"

eevee = context.scene.eevee

Expand All @@ -96,11 +103,6 @@ def execute(self, context):
# > Viewport: 8
eevee.taa_samples = 8

# Ambient Occlusion: enable
eevee.use_gtao = True
# > Distance: 0.1 m
eevee.gtao_distance = 0.100

# Depth of Field
# > Max Size: 16 px
eevee.bokeh_max_size = 16.000
Expand Down
Loading