Spécifier le modèle d'éclairage du matériau SCN dans Pythonista

C4826DB1-F6F1-482A-9F18-57A5E837144A.jpeg

Structures et constantes Swift dans Pythonista? Je pensais que je ne pouvais pas changer le LightingModel de SCNMaterial, auquel je ne pouvais pas accéder correctement et pourrais changer la texture du modèle de manière significative, mais j'ai trouvé un moyen de le faire.

setLightingModelName_(string name)

lightingModel est une propriété de SCNMaterial, mais pour le modifier, utilisez la fonction setLightingModelName_.

L'argument est une chaîne de caractères et les chaînes de caractères suivantes peuvent être spécifiées.

class SCNLightingModel:
	blinn = 'SCNLightingModelBlinn'
	constant = 'SCNLightingModelConstant'
	lambert = 'SCNLightingModelLambert'
	phong = 'SCNLightingModelPhong'
	physicallyBased = 'SCNLightingModelPhysicallyBased'
	shadowOnly = 'SCNLightingModelShadowOnly'

Source de l'échantillon

scenekit03.py


import objc_util
from objc_util import *
import ui

load_framework('SceneKit')

SCNView,SCNNode,SCNScene,SCNCamera,SCNLight,SCNBox,SCNMaterial = map(ObjCClass, ['SCNView','SCNNode','SCNScene','SCNCamera','SCNLight','SCNBox','SCNMaterial'])

class SCNLightingModel:
	blinn = 'SCNLightingModelBlinn'
	constant = 'SCNLightingModelConstant'
	lambert = 'SCNLightingModelLambert'
	phong = 'SCNLightingModelPhong'
	physicallyBased = 'SCNLightingModelPhysicallyBased'
	shadowOnly = 'SCNLightingModelShadowOnly'
	

def main():
	main_view = ui.View()
	main_view_objc = ObjCInstance(main_view)
	
	# View
	scene_view = SCNView.alloc().initWithFrame_options_(((0, 0),(400, 400)), None).autorelease()
	# UIView.autoresizingMask = flexibleWidth(2) | flexibleHeight(16)
	scene_view.setAutoresizingMask_(18)
	scene_view.setAllowsCameraControl_(True)
	
	scene = SCNScene.scene()
	node_root = scene.rootNode()
	
	# material
	material = SCNMaterial.material()
	material.setLightingModelName_(SCNLightingModel.physicallyBased) 
	material.diffuse().setColor_(UIColor.redColor().CGColor())
	
	# box geometry
	geom_box = SCNBox.boxWithWidth_height_length_chamferRadius_(1.0,1.0,1.0,0.2)	
	geom_box.setMaterials_([material])
	node_box = SCNNode.nodeWithGeometry_(geom_box)
	node_box.setPosition((-0.5,0.5,-0.5))
	node_root.addChildNode_(node_box)
	
	# camera
	camera = SCNCamera.camera()
	node_camera = SCNNode.node()
	node_camera.setCamera(camera)
	node_camera.setPosition((0,0,5.0))
	node_root.addChildNode_(node_camera)
	
	# Light
	light = SCNLight.light()
	light.setType_('omni')
	light.setColor_(UIColor.whiteColor().CGColor())
	node_light = SCNNode.node()
	node_light.setPosition((2.0,2.0,2.0))
	node_light.setLight_(light)
	node_root.addChildNode_(node_light)
	
	scene_view.setScene_(scene)
	
	main_view_objc.addSubview_(scene_view)
	
	main_view.name = 'scene kit'
	main_view.present()
	
main()

Mystère

La relation entre la structure LightingModel de SCNMaterial et SCNLightingModel est un mystère.

référence

Recommended Posts

Spécifier le modèle d'éclairage du matériau SCN dans Pythonista
Comptez le nombre de paramètres dans le modèle d'apprentissage en profondeur
[Golang] Spécifiez un tableau pour la valeur de la carte
Afficher les horaires du système de localisation des bus Morioka dans Pythonista
Spécifiez le codage de la chaîne Unicode dans l'instruction d'impression Python 2.x
L'histoire de la participation à AtCoder
Simulation Python du modèle épidémique (modèle Kermack-McKendrick)
Essayez de modéliser le rendement cumulatif du roulement dans le trading à terme
L'histoire du "trou" dans le fichier
J'ai essayé de toucher des méthodes liées au toucher dans le module de scène de pythonista
[Comprendre en 3 minutes] Le début de Linux
Spécifiez la couleur dans la carte 2D matplotlib
Vérifiez le comportement du destroyer en Python
L'histoire d'une erreur dans PyOCR
Implémenter une partie du processus en C ++
L'importance de Lint comme le pense Pythonista
Somme des variables dans un modèle mathématique
Le résultat de l'installation de python sur Anaconda
Principes de base pour exécuter NoxPlayer en Python
À la recherche du FizzBuzz le plus rapide en Python
Avantages de l'utilisation de slugfield dans le modèle Django
[IOS] Modifiez la durée d'affichage de chaque image de l'animation GIF dans Pythonista3.
traitement (python) Diagramme les coordonnées de la liste Spécifiez le nombre de fois dans draw ()
Python scikit-learn Une collection de conseils de modèles prédictifs souvent utilisés sur le terrain
Implémenter le modèle mathématique «modèle SIR» des maladies infectieuses dans OpenModelica (voir l'effet du vaccin)
Visualisation de l'état de tir de la couche cachée du modèle appris dans le tutoriel TensorFlow MNIST
Python scikit-learn Une collection de conseils de modèles prédictifs souvent utilisés sur le terrain
Sortie du nombre de cœurs de processeur en Python
Signification de {numéro de version} dans le package mysql rpm
Lier l'élément list_display dans l'Admin Model de Django
[Python] Trier la liste de pathlib.Path dans l'ordre naturel
Changer la taille de police de la légende dans df.plot
Récupérer l'appelant d'une fonction en Python
Faites correspondre la distribution de chaque groupe en Python
Afficher le résultat du traitement de la géométrie en Python
Copiez la liste en Python
Trouvez le nombre de jours dans un mois
Lire la sortie du sous-processus, ouvrir en temps réel
Découvrez la fraction de la valeur saisie en python
L'histoire de la recherche du n optimal dans N poing
Correction des arguments de la fonction utilisée dans map
Trouvez la solution de l'équation d'ordre n avec python
[Python numpy] Spécifiez dynamiquement l'index du tableau
L'histoire de la lecture des données HSPICE en Python
[Note] À propos du rôle du trait de soulignement "_" en Python
Résolution d'équations de mouvement en Python (odeint)
Visualisation de l'état d'utilisation de l'évier dans l'entreprise
Sortie sous la forme d'un tableau python
Spécifiez l'URL de la vue dans le modèle Django
L'histoire de l'affichage des fichiers multimédias dans Django
Faire de n'importe quelle clé la clé primaire dans le modèle Django
Rechercher par la valeur de l'instance dans la liste
Rendre la progression de dd visible sur la barre de progression
Simulation GUI du nouveau virus corona (modèle SEIR)
[Analyse du modèle SIR] Pic du nombre d'infections au Japon et dans le monde ♬